黄瓜量角器,失败的预期被正确报告,但过期预期超时

时间:2017-05-10 13:36:58

标签: timeout protractor chai

我正在按照Protractor,Cucumber和Chai / Chai的要求进行测试。以下代码行没有给我我期待的行为;

expect(settingsRolesPage.mainRoleDescription.getAttribute("ng-reflect-model")).eventually.equal(table.hashes()[0].description);

如果我将期望部分发送到console.log,我会得到一个有效的答案(' Bambola');

settingsRolesPage.mainRoleDescription.getAttribute("ng-reflect-model")

' table.hashes()[0] .description'还包含' Bambola'如果我运行测试,我会得到;

function timed out after 5000 milliseconds

(我尝试使用env.js条目扩展超时,报告超时只需要更长的时间)

如果我手动更新描述的值以使期望失败(添加' failme'),我会得到看似有效的断言错误;

AssertionError: expected 'Bambola' to equal 'Bambolafailme'

那么为什么明显的成功断言只是超时而不是过去?我也试过了;

expect(settingsRolesPage.mainRoleDescription.getAttribute("ng-reflect-model")).eventually.equal(table.hashes()[0].description).then(console.log);

那也记录了Bambola'

1 个答案:

答案 0 :(得分:0)

您的代码可能会出错。据我所知,您在执行.to时忘记添加expect。有关示例,请参阅protractor-cookbook。这是CucumberJS和Typescript的一个例子,但.to的概念应该是相同的。

其次,您可以在callbackspromises之间为CucumberJS中的expect选择。

如果您使用callbacksexpect应该是callback,如果done被调用{/ 1}}

expect(settingsRolesPage.mainRoleDescription.getAttribute("ng-reflect-model"))
    .to.eventually.equal(table.hashes()[0].description).and.notify(done);

如果您使用promisses,则expect应为

return expect(settingsRolesPage.mainRoleDescription.getAttribute("ng-reflect-model"))
    .to.eventually.equal(table.hashes()[0].description);