2016-06-22 30 views
0

我遇到了問題,需要您的幫助。 我有一個產品列表,我想爲每個產品運行一些塊。量角器忽略在回調函數中傳遞的規格

函數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循環中的塊。

謝謝! :)

+0

你確定> productsList = products;句法正確嗎? –

+0

謝謝你的回答:)。這不是問題。我可以刪除它並直接通過產品進行迭代。它仍然忽略它的塊。產品在每次迭代中打印,只有it-blocks不被執行。 – yosrO

回答

0

我使用onPrepare函數中的promise來解決這個問題。

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; 
}