Javascript 解毒引用错误:未定义before

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,只运行了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 --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
#下一步

  • 选择您想要运行的测试运行程序;开玩笑摩卡咖啡
  • 确保您拥有测试运行程序的正确init.js文件
  • 如果使用的是jest,请创建一个config.json文件,并将测试运行程序添加到package.json中的detock对象中
  • 如果使用摩卡,请使用mocha.opts文件。无需在package.json中的detock对象中指定测试运行程序
  • 您可以在此处查看设置说明:


    如果您仍然有问题,请告诉我。

    我不知道这是一个选项。谢谢。:)