2016-06-22 9 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ループのitブロックを無視します。

ありがとうございました! :)

+0

あなたは確かですか?productsList = products;構文的に正しいですか? –

+0

ありがとうございました:)それは問題ではありません。私はそれを取り除き、製品を通して直接反復することができます。 itブロックは無視されます。製品は各反復で印刷され、itブロックのみが実行されません。 – yosrO

答えて

0

私はこれをonPrepare関数の約束を使って解決しました。

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; 
} 
関連する問題