超时-在jest.setTimeout.Error指定的120000ms超时内未调用异步回调

时间:2019-03-28 13:30:20

标签: react-native testing jestjs detox

排毒测试-c android.emu.debug 由于测试用例未运行而引发如下错误。

Timeout - Async callback was not invoked within the 120000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 120000ms timeout specified by jest.setTimeout.

  at mapper (../node_modules/jest-jasmine2/build/queueRunner.js:25:45)


  ReferenceError: device is not defined

  1 | describe('Example', () => {
  2 |   beforeEach(async () => {
> 3 |     await device.reloadReactNative();
    |           ^
  4 |   });
  5 | 
  6 |   // it('should have welcome screen', async () => {

  at device (firstTest.spec.js:3:11)


  at device (firstTest.spec.js:3:11)
  at tryCatch (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:62:40)
  at Generator.invoke [as _invoke] 
  (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:288:22)
  at Generator.prototype.(anonymous function) [as next] 
  (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:114:21)
  at tryCatch (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:62:40)
  at invoke (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:152:20)
  at ../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:187:11
  at callInvokeWithMethodAndArg 
  (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:186:16)
  at AsyncIterator.enqueue 
  (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:209:13)
  at AsyncIterator.prototype.(anonymous function) [as next] 
  (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:114:21)
  at Object.<anonymous>.runtime.async 
  (../node_modules/@babel/runtime/node_modules/regenerator- 
  runtime/runtime.js:233:14)
  at Object._callee (firstTest.spec.js:2:14)


  ReferenceError: element is not defined

   8 |   // });
   9 | 
  10 |   it('should have splash screen', async () => {
     |                                   ^
  11 |     await expect(element(by.id('splash'))).toBeVisible();
  12 |   });
  13 | 

排毒安装:

npm install detox --save-dev

排毒初始化-r开玩笑

已创建包含三个文件的e2e文件夹,如下所示:

fristTest.spec.js

describe('Example', () => {
    beforeEach(async () => {
    await device.reloadReactNative();
});

it('should have welcome screen', async () => {
    await expect(element(by.id('welcome'))).toBeVisible();
});

it('should show hello screen after tap', async () => {
    await element(by.id('hello_button')).tap();
    await expect(element(by.text('Hello'))).toBeVisible();
});

it('should show world screen after tap', async () => {
    await element(by.id('world_button')).tap();
    await expect(element(by.text('World!!!'))).toBeVisible();
});
});

config.json

{
    "setupTestFrameworkScriptFile": "./init.js",
    "testEnvironment": "node"
}

init.js

const detox = require('detox');
const config = require('../package.json').detox;
const adapter = require('detox/runners/jest/adapter');

jest.setTimeout(10000);
jasmine.getEnv().addReporter(adapter);

beforeAll(async () => {
    await detox.init(config);
});

beforeEach(async () => {
    await adapter.beforeEach();
});

afterAll(async () => {
    await adapter.afterAll();
    await detox.cleanup();
});

package.json下有关devDependencies的详细信息

"devDependencies": {
"@babel/core": "^7.3.4",
"@babel/preset-env": "^7.4.2",
"babel-jest": "^24.5.0",
"detox": "^12.0.0",
"detox-expo-helpers": "^0.6.0",
"jest": "^24.5.0",
"metro-react-native-babel-preset": "^0.53.1",
"mocha-react-native": "^0.6.0",
"react-test-renderer": "16.8.3",
"redux-mock-store": "^1.5.3"
},
"jest": {
"preset": "react-native"
},
"detox": {
"runner-config": "e2e/config.json",
"configurations": {
  "android.emu.debug": {
    "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
    "build": "cd android && gradlew assembleDebug assembleAndroidTest - 
 DtestBuildType=debug && cd ..",
    "type": "android.emulator",
    "name": "Nexus_S_API_27"
  },
  "android.emu.release": {
    "binaryPath": "android/app/build/outputs/apk/release/app-release.apk",
    "build": "cd android && ./gradlew assembleRelease assembleAndroidTest 
 -DtestBuildType=release && cd ..",
    "type": "android.attached",
    "name": "Nexus_5X_API_26"
  }
  },
  "test-runner": "jest"
  }

我尝试了许多线程,但没有任何工作适合我。最后在我这边发帖,谢谢。

0 个答案:

没有答案