我对黄瓜和量角器完全陌生,以前从未编写过任何e2e测试。我在Angular中使用this libaray,但是在运行测试时遇到各种困难。
我的步骤文件如下:
const {Given, Then} = require('cucumber');
const expect = require('expect');
Given('I navigate to the homepage', function (callback) {
browser.get('http://localhost:4200');
callback();
});
Then('I want to see a welcome message', function (callback) {
expect($$('h1').first().getText()).toEqual('Welcome!');
callback();
});
,但是看来getText()
是一个异步调用。 getText()
似乎正在兑现承诺。
该测试应该失败,因为h1
的文本不是Welcome!
。当我尝试捕获诺言和expect()
中的then()
时,测试在应该失败的地方成功了。
关于黄瓜/量角器,网络上有很多资源,它们都说不同的话。很难知道该怎么做。实际的黄瓜文档中没有提供测试此类浏览器元素的示例。
有人可以帮忙吗?我正在使用量角器-黄瓜框架6.1.1和黄瓜5.0.1。
答案 0 :(得分:0)
浏览dom,看看是否还有另一个带有文本“ Welcome!”的h1元素。测试不可能通过,并且该文本中没有这样的元素。
答案 1 :(得分:0)
更改以下步骤功能如下:
Then('I want to see a welcome message', function (callback) {
$$('h1').first().getText().then(function(txt){
console.log('in then() txt: ' +txt);
expect(txt).toEqual('Welcome!');
callback();
});
});
在您的方案中添加更多一行Then I want to see a welcome message 1
,然后
为此添加以下步骤功能。
Then('I want to see a welcome message 1', function (callback) {
expect($$('h1').first().getText()).resolves.toEqual('Welcome!');
callback();
});
再次运行并告诉我console.log('in then() txt: ' +txt)
的结果和输出