我在量角器中有一个简单的登录测试,在添加超时和间隔方法之前运行良好。我猜量角器在等这些部件完成。如何使我的测试工作?也许如果我以其他方式使用$timeout
和$interval
?
我在angular项目中像使用服务一样使用timeout和interval。在之后说hello一些让我们说10秒($timeout
)并保持打印此消息5次($interval
)并在间隔完成时打印bye。
这是我的e2e测试
var LoginPage = require('loginPage');
describe('Should login', function() {
var page;
beforeEach(function() {
page = new LoginPage();
page.visit();
browser.getLocationAbsUrl().then(function (url) {
expect(url).toEqual('/loginform');
});
page.setUser('username');
page.setPassword('123456');
page.submitLogin();
});
it('should redirect to welcome page', function () {
expect(browser.getCurrentUrl()).toContain('/welcome');
});
});
这是我的计时器代码块:
// Say hello after 10 seconds and keep printing the message five times.
doTimer(10, 5);
function doTimer(forTimeout, forInterval) {
var countDown;
myTimeout = $timeout(function () {
countDown = forInterval;
myInterval = $interval(function() {
countDown--;
console.log("hello");
if (countDown == 0) {
console.log("bye");
}
}, 1000);
}, forTimeout*1000);
}
所以,没有调用我的方法doTimer
,我的测试运行完美。我该如何处理这个,以得到我的测试工作良好?
您应该在声明函数后调用doTimer(10,5),如下所示-
function doTimer(forTimeout, forInterval) {
var countDown;
myTimeout = $timeout(function () {
countDown = forInterval;
myInterval = $interval(function() {
countDown--;
console.log("hello");
if (countDown == 0) {
console.log("bye");
}
}, 1000);
}, forTimeout*1000);
}
doTimer(10, 5);
你甚至在量角器知道函数在哪里之前调用函数,所以,尝试先声明函数然后调用它。