1.0.0 • Published 1 year ago

@hutechwebsite/blanditiis-assumenda-temporibus-tempora v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

jest-mock-inference-helper

Coverage Status GitHub npm Vulnerabilities npm bundle size (scoped) GitHub last commit

This targets typescrit projects and aims to simplify declaration of mocked classes and functions

install

npm i -D @hutechwebsite/blanditiis-assumenda-temporibus-tempora

usage

asMock

AsMockDemo

Assuming SUT file

import { bar, baz } from "./bar";

export function foo() {
  return bar() + " - " + baz();
}

in your spec file

import { asMock } from "@hutechwebsite/blanditiis-assumenda-temporibus-tempora";
import { foo } from "./foo";
import { bar, baz } from "./bar";

// Automock bar
jest.mock("bar");

const barMock = asMock(bar).mockReturnValue("bar");
const bazMock = asMock(baz).mockReturnValue("baz");

// same as
const barMock = (bar as jest.MockedFunction<typeof bar>).mockReturnValue("bar");
const bazMock = (baz as jest.MockedFunction<typeof baz>).mockReturnValue("baz");

describe("foo", () => {
  it("Should success", () => {
    const res = foo();

    await expect(barMock).toHaveBeenCalled();
  });
});

asMocks

works similar to asMock but provides inference sugar for multiple functions in a single call

AsMocksDemo

Assuming SUT file

import { bar, baz } from "./bar";

export function foo() {
  return bar() + " - " + baz();
}

in your spec file

import { asMock } from "@hutechwebsite/blanditiis-assumenda-temporibus-tempora";
import { foo } from "./foo";
import { bar, baz } from "./bar";

// Automock bar
jest.mock("bar");

const { barMock, bazMock } = asMocks({ bar, baz });

// same as
const barMock = bar as jest.MockedFunction<typeof bar>;
const bazMock = baz as jest.MockedFunction<typeof baz>;

describe("foo", () => {
  beforeEach(() => {
    barMock.mockReturnValue("bar");
    barzock.mockReturnValue("baz");
  });

  it("Should success", () => {
    const res = foo();

    await expect(barMock).toHaveBeenCalled();
  });
});

asClassMock

Provides functionality to infer class mock type and also shortcuts to implement inner object fields and/or properties

see test file for extended usage

AsMocksDemo

Assuming SUT file

import { BarClass } from "./bar";

export function foo() {
  const bar = new BarClass();

  return bar.func1() + " - " + bar.func2();
}

in your spec file

import { asClassMock } from "@hutechwebsite/blanditiis-assumenda-temporibus-tempora";
import { foo } from "./foo";
import { BarClass } from "./bar";

// Automock bar
jest.mock("bar");

const BarClassMock = asClassMock(BarClass);

// similar to
const BarClassMock = bar as jest.MockedClass<BarClassMock>;

describe("foo", () => {
  beforeEach(() => {
    BarClassMock.func1.mockReturnValue("bar");
  });

  it("Should success", () => {
    const res = foo();

    await expect(BarClassMock.func1).toHaveBeenCalled();
  });
});

Changelog

Changelog.

License

MIT Lizenz

Object.assignsetshebangsetPrototypeOflocationoptionconnectURLSearchParamspipetoolsInt16ArrayglobprototyperandomsideES6loggerhttpsimmerwhatwgcallboundgetterhttpdom-testing-librarysymboleventsbreaklinkhasOwnPropertynopeObject.valuesrfc4122ECMAScript 5findprogressxtermhasOwnpyyamlqscode pointstrimStartnegative zerovaluenested cssgenericsarraysless.jsdebugcoerciblemake direcmascriptworkspace:*graphqlcolorsmrureduxcloudfrontlintajvECMAScript 2019schemeshrinkwraproutingjasminewatcherutil.inspecttyped arrayes2015rgbES2023mergeIteratori18nreact-hook-formexpresshardlinkslanguagenumbercolumnsjsdompicomatchyamldatemakeroute53loadbalancingeslintconfigfastifyinternalobjdirlesstraverseequalityfluxmodulejsbyteOffsetisConcatSpreadableclass-validatorObject.isFloat32Arrayyupformsearches7koreanpropertydefinekeyfindupremovequeueprotobufdependenciesspinnerprivate databundlerindicatorlimitedponyfilltrimLeftpropertiesprotocol-buffersmixinsarraycreatelinewrapObject.keysArraymobilesortpathebsauthwgetbddrmprivatecolourio-tsmulti-packagesharedarraybufferswfRegExp#flagsuuidYAMLcore-jsiteraterangeerrorstoragegatewayenderUint8ClampedArraycollectioncloudsearchdeep-clonecloudwatches6deepcopyserializationtextquerywordbreakjestObject.fromEntriesES2015inputrecursiveratelimitspeeds3flatargvresolveES3regularjQueryextrasomefetchassignvpcconcatObject.definePropertyWebSocketnodeemrObservabletoolkitreduceelbvariables in cssmetadatahasdeep-copycollection.es6envtoobjectrdstrimRightflagspromisesgdprasyncJSON-Schemalockfilees2016chinese[[Prototype]]accessorautoprefixerUint8ArrayES2016execMicrosoftsyntaxerrorcachevaluesfull-widthrm -rfcensorcallbindECMAScript 3offsetpasswordArray.prototype.flatduplexchannelescapeES2020directoryprunestylesmovebusyWeakMapArray.prototype.includesReactiveXboundpromisesuperstructjoilogsorted$.extendairbnbdatamonorepotypeofes2017ES5mkdirpjapanesetypeswatchingguidWebSocketscomparewraparktypeAsyncIterator@@toStringTagaccessibilitybytecharactersapolloRegExp.prototype.flagsECMAScript 6deepclonestreams2javascripthookformArray.prototype.findLastIndexnamecorsamazonBigUint64Arrayless mixinskeysshamloadingviewfseventscommand-linepolyfillfindLastIndexReactiveExtensionslrutostringtagtestersuperagentECMAScript 2017matchesreadabletermawshashURLpersistenteslintpluginsimpledbelm0Reflect.getPrototypeOfcss lessenvironmentmkdirinvariantpropstatelesssymlinkdeepfpsstateiteratorimportexportinferencewafObject.entrieswalkFunction.prototype.namesameValueZeroauthenticationeventDispatchercall-boundonceincludesfixed-widthclitestcryptwidthregular expressionbootstrap cssserializebrowserlist.envdynamodbvalidansigroupByserializerec2spinnersless cssparentthroatconfigurablecallbacksyntaxclientstreamgradients css3typeArray.prototype.containsvestgetoptbluebirdreuseES2019replaygradients cssstringifyArray.prototype.flatMapprefixtelephoneefficientrequireweakmapcodesCSSrouteclassnamepatchtoStringTagfunctionalArray.prototype.flattenbrowserslistES2017stylesheetnpmtapInt32ArraycorecryptofindLastformatconsumetypesafetimees-abstractestreereact-testing-libraryentriespackage managerlibphonenumberpnpm9CSSStyleDeclarationes-shim APIprettyxhrfast-clonejsonpathEScheckmodulescallbuffersdomstyleguidesharedzodtypescriptbindtoArraySymbolajaxwarningtrimEndstylewatchFilecontainsfast-deep-copyString.prototype.matchAlliddefinePropertyBigInt64Arrayconsolefastimportzerohooksterminaldropopenglacierpositivecompile lessvariablesES8flatMapHyBiencryptiontestingfromObservablesreactphonefolderECMAScript 2018argparsea11yperformanceECMAScript 2021dayjsdeletecompilerdescriptiondifflesscssWeakSetastES7maprequestArrayBuffer#sliceArray.prototype.findLastlimitowntc39electronrateflattenMapwritablePushomit-0optimizerclassesredirectdatastructureextendtypeerrores-shimswebpluginprotologgingcomputed-typestypedarrayreadperformantemitstringmapreducereal-timejsxminimaleast-asian-widthdataviewquerystringES2021Streamsreact-hooksObjectStyleSheetstablecommandttygetPrototypeOfbundlinghelpersdotenvpreprocessorwalkingjsonECMAScript 2023parsetseveryconcurrencyespreelazyfsregexpstreamsmkdirsargsrobustformattingidleECMAScript 7symbolssetImmediatefigletapifileutilitiesquotees2018wordwrapnodejsnegativearraybuffermimelook-upiamRxJSuppackagesTypeBoxawaitbannerfast-deep-cloneimmutablesetterframeworklasteslint-pluginslotslicebeanstalkInt8Arrayfullmime-db
1.0.0

1 year ago