
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
A small library to easily integrate msw with react.
You can use this utility to test your React components without the need of a backend server. It wraps msw, so you can refer to the documentation here.
npm install -s msw-react
or
yarn add msw-react
or
pnpm install msw-react
As said before this utility is essentially a react wrap for the msw
library, this means that to make it work on the client a Service Worker needs to be created.
To do so, just run npx msw init <public_dir> --save
where <public_dir>
corresponds to the public directory of your project:
npx msw init ./public --save
or
pnpx msw init ./public --save
Wrap your code in MockProvider
component to make the worker instance available to all the sub components.
const handlers = [
rest.get("https://github.com/octocat", (req, res, ctx) => {
return res(
ctx.delay(1500),
ctx.status(202, "Mocked status"),
ctx.json({
message: "Mocked response JSON body",
})
);
}),
];
<MockProvider handlers={handlers}>
<App />
</MockProvider>
By default it will start the worker server on mount, you can override this behavior using the startOnMount
boolean prop.
<MockProvider handlers={handlers} startOnMount={false}>
<App />
</MockProvider>
Or if you wanna pass some custom options to the start method you can pass them as startOptions
prop. Take a look here for a list of all the available options
<MockProvider handlers={} startOptions={{ quiet: true, waitUntilReady: true }}>
<App />
</MockProvider>
By default the Service Worker gets setup only on the Development mode, but it allows you to control it using the enabled
prop which as suggested by msw defaults to process.env.NODE_ENV === "development"
<MockProvider handlers={handlers} enabled={false}>
<App />
</MockProvider>
We give you also access to override the default setupServer
function (which defaults to the msw implementation)
const customSetupServer = (handlers) => {
doSomethingElse();
setupServer(...handlers);
};
<MockProvider handlers={handlers} setupServer={customSetupServer}>
<App />
</MockProvider>
Each child of the MockProvider will have access to the worker instance. Either by using the useWorker
hook:
import { useWorker } from "msw-react";
const Child = () => {
const worker = useWorker();
useEffect(() => {
worker.stop();
}, []);
return <div>Hello</div>;
};
Or using the MswWorker
component:
import { MswWorker } from 'msw-react';
const Child2 = () => {
return (
<MswWorker>
{(worker) => (
<>Hello<>
)}
</MswWorker>
);
}
The advantage of being a simple wrap of msw is that it works out of the box with other libraries that implement msw's API, some examples:
// Import
import dbUtils, { MockServer, MockServerInit } from "ts-mckr";
// Import static data
import quotes from "./quotes.json";
// Database creation
const mockDb = {
quotes: {
id: dbUtils.primaryKey(Number),
quote: String,
author: String,
},
users: {
id: dbUtils.primaryKey(Number),
name: String,
},
};
const handlers = new MockServer()
// Database init
.createDB(mockDb)
// Dataset injection, using fake data
.createDataSet(
{
users: [
{
name: MockServer.getFakeData({
module: "name",
method: "fullName",
language: "it",
}),
birthDate: MockServer.getFakeData({
module: "date",
method: "birthdate",
}),
},
],
},
// Dataset options
{ repeat: 40 }
)
// Dataset injection, using json data (static)
.createDataSet({ quotes })
// Get handlers (get, post, ecc...)
.createHandlers();
// Create worker
return (
<MockProvider handlers={handlers} setupServer={MockServerInit}>
<App />
</MockProvider>
);
FAQs
> A small library to easily integrate msw with react.
We found that msw-react demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.