小编B R*_*Rob的帖子

Jest Mock功能和Sinon间谍有什么区别

我正在用Jest嘲笑一个函数,文档说他们真的是'间谍'.我也看过在SinonJS中使用间谍,但我发现两者之间没有明显区别.如果他们服务于同一目的,有没有理由选择一个而不是另一个?

Jest Mock功能

SinonJS

javascript sinon jestjs

12
推荐指数
1
解决办法
4951
查看次数

TypeScript forEach 如何推断联合的类型并更改返回类型

我们想要获取一个文档类型并改变它的一些字段,然后返回具有新类型的新文档。我们想根据一组值(collectionDataFields在下面的示例中)来确定要改变的字段。

type AllDocuments = {
    __typename: 'cat'
    a: '123',
    b: '123',
    z: 'xyz'
} | {
    __typename: 'dog'
    a: '123',
    c: '123',
    z: 'xyz'
}

const collectionDateFields = {
    cat: ['a', 'b'],
    dog: ['a', 'c']
} as const

export const useStringsToNums = (document: AllDocuments) => {
  const dateFields = collectionDateFields[document.__typename]

  dateFields.forEach((field) => {
    document[field] = parseInt(document[field])
  })
  return document
}

Run Code Online (Sandbox Code Playgroud)

在示例中,dateFields输入为,readonly ["a", "b"] | readonly ["a", "c"]但个人输入fieldany

document返回的 …

typescript typescript-generics

6
推荐指数
1
解决办法
143
查看次数

如何使用 jest 配置 jsdom

我已将 jest 和 jsdom 安装到我的 React 项目中,但在导入使用该变量的 React 组件时遇到问题window.localStorage。我添加了 jsdom 的安装文件,我相信它可以解决问题。

这是我的设置:

package.json 中的笑话配置

"jest": {
    "verbose": true,
    "testEnvironment": "jsdom",
    "testURL": "http://localhost:8080/Dashboard/index.html",
    "transform": {
      "^.+\\.js$": "<rootDir>/node_modules/babel-jest",
      "^.+\\.jsx$": "<rootDir>/node_modules/babel-jest"
    },
    "unmockedModulePathPatterns": [
      "node_modules/react/",
    ],
    "moduleFileExtensions": [
      "js",
      "jsx",
      "json",
      "es6"
    ]
  }
Run Code Online (Sandbox Code Playgroud)

安装程序.js

import jsdom from 'jsdom';

const DEFAULT_HTML = '<html><body></body></html>';

global.document = jsdom.jsdom(DEFAULT_HTML);

global.window = document.defaultView;
global.navigator = window.navigator;
global.localStorage = window.localStorage;
Run Code Online (Sandbox Code Playgroud)

测试.js

'use strict';
import setup from './setup';
import React from 'react';
import jsdom from 'jsdom';
import …
Run Code Online (Sandbox Code Playgroud)

javascript jsdom reactjs jestjs

5
推荐指数
1
解决办法
1万
查看次数