我遇到了一个问题,需要你的帮助。 我有一个产品列表,我想为每个产品运行一些块。
函数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 :(得分: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;
}