2016-04-30 17 views
0

外部ライブラリに多額に属し、各メソッド内で外部ライブラリ関数を呼び出している場合、コードをユニットテストする方法。 イスタンブールのようなコードカバレッジよりも、擬似するものがあれば、それらのラインは嘲笑されません。外部依存関係とライブラリの関与による単体テストの経験がある人は、ベストプラクティスは何ですか?ジャスミンの外部ライブラリを使ったユニットテスト

たとえば、2つの内部関数と3つの外部ライブラリ関数があります。 これらの外部のものをモックした場合、イスタンブールはこれらの行を対象としてカウントしません。 internalFoo1ためのテストを作成する方法

function internalFoo1(input) { 
var result = internalFoo2(input*2); 
var finalResult = externalLibraryBar1(result); 
return result; 
}; 

function internalFoo2(value) { 
    var operation = externalLibraryBar2(value*2); 
    var response = externalLibraryBar3(operation); 
    return response; 
} 

()ので、ユニットテストは、同様に、()を一度internalFoo2をすべてのコード行をカバーします。

答えて

0

理想的には、外部ライブラリをテストするべきではありません。あなたの仕事ではありません。

この場合、スパイを使用して、そのライブラリが呼び出されたかどうかを確認できます。 http://jasmine.github.io/2.2/introduction.html#section-Spies

ジャスミンの文書から取ったもの:

describe("A spy, when configured with an alternate implementation", function() { 
    var foo, bar, fetchedBar; 

    beforeEach(function() { 
    foo = { 
     setBar: function(value) { 
     bar = value; 
     }, 
     getBar: function() { 
     return bar; 
     } 
    }; 

    spyOn(foo, "getBar").and.callFake(function() { 
     return 1001; 
    }); 

    foo.setBar(123); 
    fetchedBar = foo.getBar(); 
    }); 

    it("tracks that the spy was called", function() { 
    expect(foo.getBar).toHaveBeenCalled(); 
    }); 

    it("should not affect other functions", function() { 
    expect(bar).toEqual(123); 
    }); 

    it("when called returns the requested value", function() { 
    expect(fetchedBar).toEqual(1001); 
    }); 
}); 
関連する問題