Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
@types/proxyquire
Advanced tools
TypeScript definitions for proxyquire
@types/proxyquire provides TypeScript type definitions for the proxyquire library, which is used for overriding dependencies during testing. This allows you to mock or stub dependencies in your unit tests, making it easier to isolate the code under test.
Mocking Dependencies
This feature allows you to mock dependencies of a module. In the example, the './dependency' module's 'myFunction' is replaced with a mock implementation that returns 'mocked value'.
const proxyquire = require('proxyquire');
const myModule = proxyquire('./myModule', {
'./dependency': { myFunction: () => 'mocked value' }
});
console.log(myModule()); // Outputs: 'mocked value'
Stubbing Dependencies
This feature allows you to stub dependencies of a module. In the example, the './dependency' module's 'myFunction' is replaced with a stub implementation that returns 'stubbed value'.
const proxyquire = require('proxyquire');
const stub = { myFunction: () => 'stubbed value' };
const myModule = proxyquire('./myModule', { './dependency': stub });
console.log(myModule()); // Outputs: 'stubbed value'
Conditional Mocking
This feature allows you to conditionally mock dependencies based on certain conditions, such as environment variables. In the example, the './dependency' module is mocked only if the NODE_ENV environment variable is set to 'test'.
const proxyquire = require('proxyquire');
const myModule = proxyquire('./myModule', {
'./dependency': process.env.NODE_ENV === 'test' ? { myFunction: () => 'mocked value' } : require('./dependency')
});
console.log(myModule()); // Outputs: 'mocked value' if NODE_ENV is 'test', otherwise the real implementation
Sinon is a popular library for creating spies, stubs, and mocks in JavaScript. It provides more granular control over individual functions and is often used in conjunction with other testing frameworks. Unlike proxyquire, which focuses on overriding entire modules, Sinon is more focused on individual function behavior.
Rewire is another library that allows you to modify the behavior of modules during testing. It provides a similar functionality to proxyquire but with a different API. Rewire allows you to set and get private variables within a module, which can be useful for more fine-grained control.
Mock-require is a simpler alternative to proxyquire that allows you to mock Node.js modules. It provides a straightforward API for replacing modules with mock implementations. While it lacks some of the advanced features of proxyquire, it is easier to use for simple use cases.
npm install --save @types/proxyquire
This package contains type definitions for proxyquire (https://github.com/thlorenz/proxyquire).
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/proxyquire.
declare var p: Proxyquire;
export = p;
interface Proxyquire {
(request: string, stubs: any): any;
<T>(request: string, stubs: any): T;
load(request: string, stubs: any): any;
load<T>(request: string, stubs: any): T;
noCallThru(): Proxyquire;
callThru(): Proxyquire;
noPreserveCache(): Proxyquire;
preserveCache(): Proxyquire;
}
These definitions were written by jt000.
FAQs
TypeScript definitions for proxyquire
We found that @types/proxyquire demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.