如何将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?
答案 0 :(得分:3)
这可以通过两个步骤完成:
detox.init()
时,请传递错误的initGlobals
参数,例如:detox.init({ initGlobals: false })
。这将禁用诸如Jest的expect
之类的全局变量。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');