混合开玩笑的期望与排毒的期望

时间:2018-07-13 03:30:15

标签: react-native jestjs detox

如何将Jest期望值与Detox期望值混合?这是我尝试做的。似乎expect已取代了玩笑expect

await mockServer.mockAnyResponse({
    httpRequest: {
      method: 'POST', 
      path: '/api/register',
    },
    httpResponse: {
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        token: 'xxx',
      }),
    }
});

await element(by.id('name')).typeText('Robert');
await element(by.id('password')).typeText('123456');
await element(by.id('register')).tap();

// Check if endpoint has been called
let result = await mockServer.checkIfRegisterEndPointHasBeenCalled();
expect(result).toBe(true); // <-- how to do something like this?

3 个答案:

答案 0 :(得分:3)

这可以通过两个步骤完成:

  1. 使用detox.init()时,请传递错误的initGlobals参数,例如:detox.init({ initGlobals: false })。这将禁用诸如Jest的expect之类的全局变量。
  2. 通过const { device, expect } = require('detox');或类似的ES6导入来使用排毒公共变量。

答案 1 :(得分:0)

另一种选择是忽略排毒覆盖expect的事实,然后以不同的名称重新导入Jest的expect

const jestExpect = require('expect');

答案 2 :(得分:0)

不确定这对于经验丰富的“测试人员”是否显而易见,但是其他两个答案仅部分正确,并且缺少我遇到麻烦的内容:尝试时得到undefined要全局访问或require expect,则必须在测试中进行。

因此,您必须执行以下操作:
init.js文件中:

before(async () => {
  await detox.init(config, {initGlobals: false});
});

在测试文件中-实际的it(带有const)或before(带有let jestExpect中带有describe的):

jestExpect = require('expect');