2017-02-06 15 views
0

私は次の関数配列を解析すると、特定のアイテムを返すことがあります。保存変数

function fetchLogs(logs) { 
    var arr = logs.value; 
    var res = arr.reduce((a, b) => { 
     if (b.level === 'INFO') { 
      a.push(b.message.split(" ").pop().replace(/"/g, "")) 
     } 
     return a; 
    }, []); 
    console.log("function", res); 
    return res; // Is this return right? 
} 

機能を使用するには、ブラウザのログが(返さ取得することですブラウザAとブラウザB)、ログが一致するかどうかを確認します。

だからここに質問私のテストは、その

it('should return logs from browser B', function(done) { 
    browserB 
     .log('browser') 
     .then(function(logs) { 
     fetchLogs(logs); 
     done(); 
     }) 
    .catch(function(e) { 
     done(e); 
    }) 
}); 

のように見え、最後に私は、これらの配列に

it('should compare browser logs', function() { 
    expect(logsA).to.have.all.members(logsB); 
}); 

を比較したい:私は、変数を保存することができますどのように

関数から以前に宣言されたグローバル変数に返すl ogsB私はと呼びますfetchLogs(ログ)は機能しますか?私はここでコールバックや約束が必要ですか?

リターンで正常に機能するのでしょうか?私のために働いた

+2

あなたが使用している場合、 'VAR fetchResult = fetchLogs();'その後、あなたは何を行うことができますVarのログを持っています。 (グローバルを設定したり、テストをトリガする関数のパラメータとして使用するなど)これが実際に何をしようとしていれば、戻り値は正しいでしょう。コードを見ると、おそらく2つの変数logsAとlogsBが必要ですこれらの関数はlogsAとlogsBを見ることができます。 – Shilly

+0

@ Shilly魅力のように動作し、なぜ私はそれについて考えなかったのでしょうか? – mrks

答えて

0

簡単な解決策:

var fetchResult = fetchLogs();