我可以使用Jest测试多个文件,但我无法弄清楚如何测试单个文件.
我有:
npm install jest-cli --save-devpackage.json:`{..."脚本":{"test":"jest"} ...}正常运行npm test(目前运行14次测试).
如何测试单个文件,例如测试app/foo/__tests__/bar.spec.js?
我试过运行npm test app/foo/__tests__/bar.spec.js(从项目根目录),但我收到以下错误:
npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'
Run Code Online (Sandbox Code Playgroud)
谢谢
我在文件fix-order-test.js中进行了"与嵌套子项一起工作"的测试.
运行以下命令会运行文件中的所有测试.
jest fix-order-test
Run Code Online (Sandbox Code Playgroud)
我如何只运行一次测试?以下不起作用,因为它搜索指定的正则表达式的文件.
jest 'works with nested children'
Run Code Online (Sandbox Code Playgroud) 我开始认为这是不可能的,但无论如何我想问.
我想测试我的一个ES6模块以特定方式调用另一个ES6模块.使用Jasmine这非常容易 -
应用代码:
// myModule.js
import dependency from './dependency';
export default (x) => {
dependency.doSomething(x * 2);
}
Run Code Online (Sandbox Code Playgroud)
和测试代码:
//myModule-test.js
import myModule from '../myModule';
import dependency from '../dependency';
describe('myModule', () => {
it('calls the dependency with double the input', () => {
spyOn(dependency, 'doSomething');
myModule(2);
expect(dependency.doSomething).toHaveBeenCalledWith(4);
});
});
Run Code Online (Sandbox Code Playgroud)
什么与Jest相当?我觉得这是一件非常简单的事情,但我一直在试图弄清楚我的头发.
我最接近的import是用requires 替换s,并在测试/函数内移动它们.这些都不是我想要做的事情.
// myModule.js
export default (x) => {
const dependency = require('./dependency'); // yuck
dependency.doSomething(x * 2);
}
//myModule-test.js
describe('myModule', () => {
it('calls the …Run Code Online (Sandbox Code Playgroud) 我正在尝试将ESLint linter与Jest测试框架一起使用.
Jest测试用一些全局变量运行jest,我需要告诉linter; 但是棘手的是目录结构,使用Jest测试嵌入了__tests__文件夹中的源代码,因此目录结构类似于:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Run Code Online (Sandbox Code Playgroud)
通常情况下,我在单个目录下进行所有测试,我可以在.eslintrc那里添加一个文件来添加全局...但我当然不想.eslintrc在每个__test__目录中添加一个文件.
现在,我刚刚将测试全局变量添加到全局.eslintrc文件中,但由于这意味着我现在可以jest在非测试代码中引用,这似乎不是"正确"的解决方案.
有没有办法让eslint基于某些基于目录名称的模式应用规则,或类似的东西?
我的测试组中有两个测试.一个使用它,另一个使用测试,它们似乎工作非常相似.他们之间有什么区别?
describe('updateAll', () => {
it('no force', () => {
return updateAll(TableName, ["fileName"], {compandId: "test"})
.then(updatedItems => {
let undefinedCount = 0;
for (let item of updatedItems) {
undefinedCount += item === undefined ? 1 : 0;
}
// console.log("result", result);
expect(undefinedCount).toBe(updatedItems.length);
})
});
test('force update', () => {
return updateAll(TableName, ["fileName"], {compandId: "test"}, true)
.then(updatedItems => {
let undefinedCount = 0;
for (let item of updatedItems) {
undefinedCount += item === undefined ? 1 : 0;
}
// console.log("result", …Run Code Online (Sandbox Code Playgroud) 我正在使用木偶戏和开玩笑来进行一些前端测试.
我的测试看起来如下:
describe("Profile Tab Exists and Clickable: /settings/user", () => {
test(`Assert that you can click the profile tab`, async () => {
await page.waitForSelector(PROFILE.TAB);
await page.click(PROFILE.TAB);
}, 30000);
});
Run Code Online (Sandbox Code Playgroud)
有时,当我运行测试时,一切都按预期工作.其他时候,我收到一个错误:
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at node_modules/jest-jasmine2/build/queue_runner.js:68:21
at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:633:19)
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为:
我指定超时为30000
我是否得到这个错误似乎非常随机
任何人都可以猜到为什么会这样吗?
当我想用命令运行我的项目时npm run test,我得到以下错误.是什么造成的?
FAIL
? Test suite failed to run
SecurityError: localStorage is not available for opaque origins at Window.get localStorage [as localStorage] (node_modules/jsdom/lib/jsdom/browser/Window.js:257:15)
at Array.forEach (<anonymous>)
Run Code Online (Sandbox Code Playgroud) 我一直在Jest测试中得到"localStorage is not defined",这是有道理的,但我的选择是什么?打砖墙.
有人成功升级到最新的 Jest 版本吗29?
我收到错误:
Error: Test environment jest-environment-jsdom cannot be found. Make sure the testEnvironment configuration option points to an existing node module.
Run Code Online (Sandbox Code Playgroud) 我正在通过Jest测试npm test.Jest默认并行运行测试.有没有办法让测试依次运行?
我有一些测试调用依赖于更改当前工作目录的第三方代码.
jestjs ×10
javascript ×6
node.js ×4
ecmascript-6 ×1
eslint ×1
mocking ×1
npm ×1
puppeteer ×1
ts-jest ×1
typescript ×1
unit-testing ×1