量角器超时,因为$timeout和$interval



我在量角器中有一个简单的登录测试,在添加超时和间隔方法之前运行良好。我猜量角器在等这些部件完成。如何使我的测试工作?也许如果我以其他方式使用$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);

你甚至在量角器知道函数在哪里之前调用函数,所以,尝试先声明函数然后调用它。

相关内容

  • 没有找到相关文章

最新更新