我正在为我的应用程序创建模拟测试用例。我不想仅仅为了测试而调用我们的服务端点,因为他们有专门的测试。所以,我正在嘲笑数据并拦截请求。但似乎量角器测试用例对请求响应的时间太早完成。我试过waitForAngular,但似乎对测试没有任何影响。测试仍然失败。
这是我的代码:
// Adding a metric
it('should allow the user to add a metric', function() {
var count = 0;
element(by.model('p.title')).clear();
element(by.cssContainingText('.btn', 'Add Metric')).click();
browser.waitForAngular();
element.all(by.cssContainingText('.btn-success', 'Add')).first().click(); // Add first metric on list
// If adding metric fails, retry 5 times before giving up
while (count < 3 && element(by.buttonText('Retry')).isDisplayed()) {
element(by.buttonText('Retry')).click();
count++;
}
// If we were able to load the metric data
if (count < 3) {
element(by.css('.close')).click();
expect(element.all(by.repeater('metric in p.metrics')).count()).toBe(1);
} else {
element(by.buttonText('Cancel')).click();
}
}, 20000);
有人可以告诉我,我在这里做错了吗?
答案 0 :(得分:0)
你的时间不会起作用,因为isDisplayed()会返回一个承诺。承诺将始终评估为真实,您的循环将始终单击()。
尝试使用等待。
browser.wait(function() {
return element(by.buttonText('Retry')).isDisplayed();
});