Skip to content

Instantly share code, notes, and snippets.

View sabesansathananthan's full-sized avatar
:octocat:
Work

Sathananthan Sabesan sabesansathananthan

:octocat:
Work
View GitHub Profile
@sabesansathananthan
sabesansathananthan / setup.js
Created September 22, 2021 07:52
mock network request in Jest
import { JSDOM } from "jsdom";
import { init } from "../../src/index";
import axios from "axios";
const config = {
url: "https://www.example.com/",
domain: "example.com",
};
const dom = new JSDOM("", config);
global.document = dom.window.document;
@sabesansathananthan
sabesansathananthan / demo3.test.js
Created September 15, 2021 18:50
mock network request in Jest
import { counter } from "./demo";
import { request } from "./demo/wrap-request";
jest.mock("./demo/wrap-request");
describe("Simple mock", () => {
it("test success", () => {
request.mockImplementation(() => Promise.resolve({ result: 0 }));
return counter(1, 2).then(res => {
expect(res).toStrictEqual({ result: 0, msg: "success" });
@sabesansathananthan
sabesansathananthan / demo2.test.js
Created September 15, 2021 15:00
mock network request in Jest
import { counter } from "./demo";
import * as request from "./demo/wrap-request";
jest.mock("./demo/wrap-request", () => {
let hook = () => ({ result: 0 });
return {
setHook: cb => (hook = cb),
request: (...args) => {
return new Promise(resolve => {
resolve(hook(...args));
@sabesansathananthan
sabesansathananthan / demo1.test.js
Created September 14, 2021 17:06
mock network request in Jest
import { counter } from "./demo";
import { request } from "./demo/wrap-request";
jest.mock("./demo/wrap-request");
describe("Simple mock", () => {
it("test success", () => {
request.mockResolvedValue({ result: 0 });
return counter(1, 2).then(res => {
expect(res).toStrictEqual({ result: 0, msg: "success" });
@sabesansathananthan
sabesansathananthan / setup.js
Created September 14, 2021 15:41
mock network request in Jest
import { JSDOM } from "jsdom";
const config = {
url: "https://www.example.com/",
domain: "example.com",
};
const dom = new JSDOM("", config);
global.document = dom.window.document;
global.document.domain = config.domain;
global.window = dom.window;
@sabesansathananthan
sabesansathananthan / index.ts
Created September 14, 2021 15:32
mock network request in Jest
import { request } from "./wrap-request";
export const counter = (id: number, number: number): Promise<{ result: number; msg: string }> => {
const operate = number > 0 ? 1 : -1;
return request({
url: "https://www.example.com/api/setCounter",
method: "POST",
data: { id, operate },
})
.then(res => {
@sabesansathananthan
sabesansathananthan / wrap-request.ts
Created September 14, 2021 15:26
mock network request in Jest
import axios, { AxiosRequestConfig } from "axios";
const instance = axios.create({
timeout: 3000,
});
export const request = (options: AxiosRequestConfig): Promise<any> => {
// do something wrap
return instance.request(options).then(res => res.data);
};
@sabesansathananthan
sabesansathananthan / jest.config.js
Created June 25, 2021 08:23
Enforce JavaScript Code Quality While Commit
module.exports = {
roots: ['<rootDir>/src'], // Find files in the src/root directory
collectCoverage: true, // Statistical coverage
coverageDirectory: 'coverage', // The folder where coverage results are output
coverageThreshold: {
// Total coverage requirements for all documents
global: {
branches: 80,
functions: 80,
lines: 80,
@sabesansathananthan
sabesansathananthan / Package.json
Last active June 25, 2021 07:08
Enforce JavaScript Code Quality While Commit
{
"scripts": {
"test:staged": "jest --bail --findRelatedTests"
},
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx}": ["npm run test:staged"]
}
}
@sabesansathananthan
sabesansathananthan / UseMouseLocation.html
Last active June 19, 2021 21:43
How React Components Are Reused
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React</title>
</head>
<body>
<div id="root"></div>