我正在尝试测试单击注册应用程序上的按钮,以确保页面正确导航到正确的页面。
当我在代码中用console.log退出响应时,它返回一个看起来像这样的数组
[undefined,null]
但是,当我为页面截图或检查URL时,单击和导航有效。它在正确的页面上。
我不明白为什么这会返回undefined / null。另外,当您单击按钮时,我不知道如何测试调用了哪个函数。
我希望能够看到正在调用的实际功能。
我正在使用AngularJS 1.6,Mocha,Puppeteer 1.11和Node 6.4.0
我还是一名初级开发人员,所以可能只是我不懂的简单事情,请帮忙!
it('should rederict to guest_sms_code state when clicking \'I have a guest code\'', async (function () {
var response = await (Promise.all([
page.waitForNavigation({waitUntil: 'domcontentloaded'}),
page.click('[ng-click="enterSmsCode()"]'),
]));
var url = await (page.url());
if (url.indexOf('guest_sms_code') === -1) {
assert.ok(false, 'The URL does not contain \'guest_sms_code\'')
}
}))
答案 0 :(得分:0)
我不相信您可以判断从UI测试调用哪个方法。这就是JavaScript单元测试可以证明的,例如使用Mocha或Jest之类的代码来测试您的代码行为。但是,根据我的经验,自动UI测试不会告诉您。毕竟,您正试图向外部用户隐藏应用程序的内部功能,对吧?
关于Promise.all([])
通话为何返回[undefined, null]
的原因,我至少可以帮助您。
首先,您应该查看测试中调用的两种方法的API文档:
waitForNavigation
文档:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitfornavigationoptions
click
文档:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pageclickselector-options
在waitForNavigation
的情况下,响应实际上返回一个Promise,该Promise 可以或不可以具有Response
值。是否使用该Response
返回任何数据取决于UI中发生的导航。就您而言,您看到的是数组中的undefined
值,表明没有从导航中返回任何Response
数据。
对于click
方法,这也只返回已解决或拒绝的Promise,而不会返回任何类型的数据。因此,自然地,您这里根本没有返回任何实际值,因此null
值被推到了数组中。