量角器/ Jasmine - 在列表上断言后调用done()

时间:2017-03-23 15:29:27

标签: angular jasmine protractor

我编写了一个类似于下面的格式的量角器测试,我在一个元素列表上映射一个断言(在本例中是一个ElementArrayFinder)。

        it("all dropdowns should be enabled", done => {
            ....

            elemArrayFinder.map((elem, idx) => {
                expect(elemArrayFinder.get(idx).isEnabled()).toBeTruthy();
                done();
            })
        });

我的问题是调用done() - 看起来这是在第一个断言上调用的,而不是在所有断言完成之后。这是否意味着Jasmine / Protractor将继续进行下一次测试,即使继续在元素列表中进行断言?有没有办法只在列表项上的所有断言完成时调用done()?

1 个答案:

答案 0 :(得分:3)

由于map是一个循环,因此在给定代码时,应在第一个循环中调用done() 。您应该能够省略done(),它应该可以工作。那就是说,为了回答你的问题,你做了这样的事情(虽然请不要这样做:)):

    it("all dropdowns should be enabled", done => {
        ....

        elemArrayFinder.map((elem, idx) => {
            expect(elemArrayFinder.get(idx).isEnabled()).toBeTruthy();
        }).then(done);
    });