我正在按照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'
答案 0 :(得分:0)
您的代码可能会出错。据我所知,您在执行.to
时忘记添加expect
。有关示例,请参阅protractor-cookbook。这是CucumberJS和Typescript的一个例子,但.to
的概念应该是相同的。
其次,您可以在callbacks
和promises
之间为CucumberJS中的expect
选择。
如果您使用callbacks
,expect
应该是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);