2017-02-17 9 views
1

編集:私はなぜそれが動作していないか分かります。 flow.execute(getSpendermeldung)を呼び出すときに引数を渡すことはできません。誰かがApiCallを別の関数でラップし、 "グローバル"変数を使用するよりも優れていますか?私はこれを別のファイルに入れて、必要なときにrequireを使うつもりです。分度器fnは関数ではありません

オリジナル投稿 私の分度器テストでは、私はデータベースからテストデータを取得したいと思います。これまでのnodejs httpモジュールでこれを行いました。私はこのデータでテストしているので、私は同期の問題で動いています。私はジャスミンのコールバックソリューションでそれらの周りを得た。しかし、私はこれが柔軟性がないとわかり、約束とコントロールフローを使用したいと思います。残念ながら私のコードを実行するとエラーが表示されます:fnは関数ではありません。どこか深いwebdriverを/ libに/ promise.js

にこれは私の関数である:

function getSpendermeldung(kennnummer) { 
var http = require('http'); 

var defer = protractor.promise.defer(); 

var options = { 
    host: 'localhost', 
    path: '/blabla/' + kennnummer 
}; 

var callback = function (response) { 
    var body = ''; 
    response.on('data', 
     function (chunk) { 
      body += chunk; 
     }); 
    response.on('end', 
     function() { 
      spendermeldung = JSON.parse(body); 
      defer.fulfill('json parsed'); 
     }); 
}; 

http.get(options, callback).end(); 

return defer.promise; 
} 

私はこれでそれを呼び出す:

var flow = browser.controlFlow(); 
flow.execute(getSpendermeldung('D0000001')); 

誰かが私が行方不明です何のアイデアを持っています。ありがとう。

PS:stacktraceを投稿するのが大好きですが、書式設定が正しく行われません。

答えて

0

引数を渡すのではなく、関数getSpendermeldungを呼び出しています。そして、はい、私が思うあなたは、グローバル変数を使用してflow.executehere

var apiCall = require('the-file-that-containsthe-function') 
var flow = browser.controlFlow(); 
flow.execute(function(){return getSpendermeldung('D0000001')}); 
0

遅延オブジェクトdeferおよびdefer.promiseではありません。

第2に、あなたは要求を終了する前に約束を果たしています。代わりにこれを行うべきではありませんか?

http.get(options, callback).end(function nowFulfillPromise() { 
    defer.fulfill('json parsed'); 
}); 
+0

が、私は両方試しを与え、常にで終わっていることを別のファイルからの引数の

詳細を必要と使用しなくても、それを達成することができます無限ループ。これは、get()がrequest()ではなくend()を暗黙的に呼び出すためです。しかし、延期を返すことは間違っているようです。 – Transzendental

+0

私のプロジェクトでは、私はいつも延期しています。 – nilesh

関連する問題