量角器忽略了回调函数中传递的规范

时间:2016-06-22 13:01:02

标签: protractor

我遇到了一个问题,需要你的帮助。 我有一个产品列表,我想为每个产品运行一些块。

函数getProducts是一个异步函数。这是我的代码。

jsonLoader = new Promise(function(resolve, reject) {
   beforeAll(function(done) {
       getProducts(function(loadedProducts) {
           resolve(loadedProducts);
           done();
       });
  });
});

describe('product-maintenance', function() {

    jsonLoader.then(function(products) {
        productsList = products;
        //productsList contains the desired products
        _.forOwn(productsList, function(product) {
              //execute it-blocks
        });
    });

   it('some test', function() {
        expect(1).toBe(1);
   });
});

他只执行'某些测试'而忽略了_.forOwn循环中的阻塞。

谢谢! :)

1 个答案:

答案 0 :(得分:0)

我通过在onPrepare函数中使用promises来解决这个问题。

onPrepare: function() {
    var deferred = protractor.promise.defer();
    getProducts(function(products) {
        if (!products) {
            deferred.reject(new Error('An error occured while loading products'));
        } else {
            productsModule.setProducts(products);
            deferred.fulfill();
        }
    });
    return deferred.promise;
}