我在量角器中进行了简单的登录测试,在添加具有超时和间隔的方法之前运行正常。所以我猜测量器正在等待那些组件完成。如何让我的测试工作?也许如果我以其他方式使用$timeout
和$interval
?
我在角度项目中使用超时和间隔就像服务一样。说你好 之后有些人说10秒钟($timeout
)并继续打印此信息5次($interval
)并打印 bye < / em>间隔时间结束。
这是我的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
,我的测试就会完美无缺。为了让我的测试工作正常,我该如何处理?
答案 0 :(得分:0)
你应该在声明函数后调用你的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);
即使在量角器知道函数的位置之前,您也在调用函数,因此,首先尝试声明函数然后调用它。希望这会有所帮助。