Ionicアプリを開発しています。calling
関数を使用すると、ユーザーは_factory.call
_で番号を呼び出すことができます。
_factory.call = '345-678-9087';
factory.calling = function(){
return $window.location.href = 'tel:' + factory.call;
};
_
これは上記のジャスミンテストです。
_it('calling method', function(){
spyOn(factory, 'calling');
factory.calling();
expect(typeof(windowMock.location.href)).toEqual('string');
});
_
上記のテストは問題なく通過しますが、factory.calling()
が返す正確な値はテストしません。私は運が悪いのに以下を試しました。
1)
_it('calling method', function(){
var emergency = spyOn(factory, 'calling');
factory.calling();
expect(emergency).toEqual("'tel:' + factory.call");
});
_
2)spyOn(factory, "calling").andCallThrough().
3)spyOn(factory, "calling").andReturn("'tel:' + factory.call").
まず、あなたのファクトリーは何も返しません:
factory.calling = function(){
return $window.location.href = 'tel:' + factory.call;
};
割り当てである$ window.location.hrefへの呼び出しは何も返しません。その呼び出しはそこにあるべきではなく、あなたのメソッドは次のようでなければならないようです:
factory.calling = function(){
return 'tel:' + factory.call;
};
このようにすると、戻り値があります。また、テストできる場所に返された値を保存していません。通常、次のように、スパイを使用して、メソッドが呼び出されたかどうかを確認します。
it('calling method', function(){
spyOn(factory, 'calling');
factory.calling();
expect(factory.calling).toHaveBeenCalled();
});
メソッドが返す結果を確認するには、次のようにexpect
ブロック内でメソッドを呼び出すことができます。
it('calling method', function(){
expect(factory.calling()).toEqual('tel: ' + factory.call);
});
または、次のような無名関数を使用して呼び出すこともできます。
it('calling method', function(){
expect(function(){return factory.calling();}).toEqual('tel: ' + factory.call);
});
または、最初に呼び出してから、次のように返される値を確認できます。
it('calling method', function(){
var result = factory.calling();
expect(result).toEqual('tel: ' + factory.call);
});
また、このタイプのテストはデータベースにヒットしてはならないため、指定した固定データを使用してテストすることをお勧めします。また、常に(あなたがやったように)OAPTに固執する必要があります。
まだこれが必要かどうかはわかりませんが、コール情報には「returnValue」プロパティが含まれています。したがって、次のようにテストできます:expect($ scope.isFilterError.calls.first()。returnValue).toBeFalsy();