混合玩笑期待与排毒期待
Posted
技术标签:
【中文标题】混合玩笑期待与排毒期待【英文标题】:Mixing jest expect with detox expect 【发布时间】:2018-12-21 08:52:48 【问题描述】:如何混合 Jest expect 和 Detox expect?这是我尝试做的。看来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?
【问题讨论】:
你有没有找到一个好的解决方案? 【参考方案1】:这分两步完成:
-
当你使用
detox.init()
时,传递一个错误的initGlobals
参数,例如:detox.init( initGlobals: false )
。这将禁用覆盖全局变量,例如 Jest 的 expect
。
通过const device, expect = require('detox');
或类似的 ES6 导入使用 detox 公共变量。
【讨论】:
节点仍然不支持 ES6 导入,您必须为此 Babel 进行测试,这会使设置变得非常复杂。 文档显示detox.init(config, initGlobals: false);
。这与detox.init( initGlobals: false )
的结果是否相同,还是其中一个错误?【参考方案2】:
另一种选择是忽略 Detox 覆盖 expect
的事实,并以不同的名称重新导入 Jest 的 expect
。
const jestExpect = require('expect');
【讨论】:
【参考方案3】:不确定这对于更有经验的“测试人员”是否显而易见,但其他两个答案只是部分正确,并且遗漏了一些我有点麻烦的东西:当你尝试访问时,你会得到 undefined
或 require
expect
全局,你必须在测试中这样做。
因此,您必须执行以下操作:
在init.js
文件中:
before(async () =>
await detox.init(config, initGlobals: false);
);
在您的测试文件中 - 实际的it
(带有const
)或before
(带有let jestExpect
在describe
):
jestExpect = require('expect');
【讨论】:
以上是关于混合玩笑期待与排毒期待的主要内容,如果未能解决你的问题,请参考以下文章
IPFS主网与Chainlink启动资助计划加速智能合约开发,西部世界期待生态开发越加繁荣