Javascript 解毒引用错误:未定义before
我正在使用排毒测试工具,我遇到了困难 我只安装了Detox,只运行了ios测试的基本代码,出现以下错误: 请帮帮我 只是iOS 错误日志Javascript 解毒引用错误:未定义before,javascript,react-native,e2e-testing,detox,Javascript,React Native,E2e Testing,Detox,我正在使用排毒测试工具,我遇到了困难 我只安装了Detox,只运行了ios测试的基本代码,出现以下错误: 请帮帮我 只是iOS 错误日志 $ detox test --configuration ios.sim.debug --debug-synchronization --take-screenshots all --record-videos nonex --record-logs all node_modules/.bin/jest e2e --config=e2e/config.json
$ detox test --configuration ios.sim.debug --debug-synchronization --take-screenshots all --record-videos nonex --record-logs all
node_modules/.bin/jest e2e --config=e2e/config.json --maxWorkers=1 --testNamePattern='^((?!:android:).)*$'
FAIL e2e/firstTest.spec.js
● Test suite failed to run
ReferenceError: before is not defined
3 | const adapter = require('detox/runners/mocha/adapter');
4 |
> 5 | before(async () => {
| ^
6 | await detox.init(config);
7 | });
8 |
at Object.<anonymous> (init.js:5:1)
}我看你好像在试着对开玩笑的跑步者进行摩卡测试。因为您的init.js是为mocha设置的,但是您使用的测试运行程序是jest。这可通过您收到的错误消息
node\u modules/.bin/jest e2e…
确认
你应该选择其中一种,jest或mocha并使用它。而不是两者兼而有之
#开玩笑
如果您使用的是jest您的init.js应该如下所示:
const detox = require('detox');
const config = require('../package.json').detox;
const adapter = require('detox/runners/jest/adapter');
jest.setTimeout(120000);
jasmine.getEnv().addReporter(adapter);
beforeAll(async () => {
await detox.init(config);
});
beforeEach(async () => {
await adapter.beforeEach();
});
afterAll(async () => {
await adapter.afterAll();
await detox.cleanup();
});
const detox = require('detox');
const config = require('../package.json').detox;
const adapter = require('detox/runners/mocha/adapter');
before(async () => {
await detox.init(config);
});
beforeEach(async function () {
await adapter.beforeEach(this);
});
afterEach(async function () {
await adapter.afterEach(this);
});
after(async () => {
await detox.cleanup();
});
您应该向package.json中的detock对象添加“testrunner”:“jest”
您还应该在与init.js
相同的位置有一个config.json
文件,其中包含:
{
"setupFilesAfterEnv" : ["./init.js"]
}
#摩卡咖啡
如果您使用的是摩卡,那么您的init.js应该如下所示:
const detox = require('detox');
const config = require('../package.json').detox;
const adapter = require('detox/runners/jest/adapter');
jest.setTimeout(120000);
jasmine.getEnv().addReporter(adapter);
beforeAll(async () => {
await detox.init(config);
});
beforeEach(async () => {
await adapter.beforeEach();
});
afterAll(async () => {
await adapter.afterAll();
await detox.cleanup();
});
const detox = require('detox');
const config = require('../package.json').detox;
const adapter = require('detox/runners/mocha/adapter');
before(async () => {
await detox.init(config);
});
beforeEach(async function () {
await adapter.beforeEach(this);
});
afterEach(async function () {
await adapter.afterEach(this);
});
after(async () => {
await detox.cleanup();
});
您应该从package.json中的detock对象中删除“testrunner”:“jest”
,因为它不是必需的
在init.js
文件旁边应该有一个mocha.opts
文件,而不是config.json
文件,并且它应该有类似于:
--recursive
--timeout 120000
--bail
#下一步
如果您仍然有问题,请告诉我。我不知道这是一个选项。谢谢。:)