如何编写测试以确保该方法reloadFn确实重新加载了窗口?我找到了这个资源,但不清楚在给定函数中发生窗口重载时编写测试时如何期望窗口重载。谢谢您的帮助!
const reloadFn = () => {
window.location.reload(true);
}
Run Code Online (Sandbox Code Playgroud) 我已将 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) 我有一个需要使用的测试,navigator.mediaDevices但我无法让任何模拟正常工作。
我正在使用create-react-app.
这是我的测试:
import getConnectedDevices from "./getConnectedDevices";
describe("getConnectedDevices", () => {
it("Should work", () => {
console.log(navigator); // Navigator {}
console.log(navigator.mediaDevices); // undefined
});
});
Run Code Online (Sandbox Code Playgroud)
我尝试添加一个模拟,因为它在 jest 文档中说明
import getConnectedDevices from "./getConnectedDevices";
describe("getConnectedDevices", () => {
it("Should work", () => {
console.log(navigator); // Navigator {}
console.log(navigator.mediaDevices); // undefined
});
});
Run Code Online (Sandbox Code Playgroud)
import "../../tests/navigator.mock"; // <- Mock added
import getConnectedDevices from "./getConnectedDevices";
describe("getConnectedDevices", () => {
it("Should work", () => {
console.log(navigator); // Navigator {}
console.log(navigator.mediaDevices); // …Run Code Online (Sandbox Code Playgroud)