jasmine - 异步调用 beforeAll

标签 jasmine protractor

这是同一测试的 2 个样本。唯一的区别是第一个使用了 beforeAll 中的 promise 。块为变量赋值,而第二个块直接赋值。

我提出了类似的问题 Running spec after promise has been resolved其中一条评论指向此问题 https://github.com/jasmine/jasmine/issues/412这表示 Jasmine 不支持此功能。有人想出任何解决方法吗?

这失败了 TypeError: Cannot read property 'forEach' of undefined

describe('Async car test', function () {

    var cars;

    beforeAll(function (done) {
        // getCars() is a promise which resolves to ['audi', 'bmw']
        getCars().then(function (data) {
            cars = data;
            console.log(cars) // ['audi', 'bmw']
            done();
        });
    });

    cars.forEach(function (car) {
        it('car ' + car, function () {
            expect(car).toBe(car);
        });
    });
});

这工作正常
describe('Car test', function () {

    var cars = ['audi', 'bmw'];

    cars.forEach(function (car) {
        it('car ' + car, function () {
            expect(car).toBe(car);
        });
    });
});

最佳答案

这不是 Jasmine 的问题,而是您的代码的问题。
beforeAll 不会阻塞语句下面的后续代码。它阻塞了定义在其中的代码('should ...', (done)=>{...});

it('should have cars', (done) => {  
    cars.forEach(function (car) {
        expect(car).toBe(car);
    });
});

关于jasmine - 异步调用 beforeAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32768333/

相关文章:

Protractor 查找并单击元素

javascript - Jasmine + Node.js 用于服务器端单元测试。如何运行测试?

javascript - 单击新数据后刷新页面时 Protractor e2e

javascript - 使用 jasmine 监视全局对象

javascript - 单元测试工厂 Jasmine-Sinon

javascript - 通过索引验证元素的存在

angular - 如何对创建导入类对象的 Angular 方法进行单元测试

sql-server - Protractor 查询 SQL Server 数据库 (MSSQL)

javascript - 能否使用 Protractor 测试 Knockout 应用程序?

javascript - 带 typescript 的 Protractor 中的下拉菜单