おはよう、工場でのメソッドのパラメータをテストする
私はAngularJSの工場で定義されたメソッドのいくつかのフィールドの値をテストしようとしています。
私のコードは次のとおりです:
'use strict';
services.factory('toto', ['$resource', function ($resource) {
return $resource('abc',
{},
{
method1: {
method: 'POST',
url: 'urlXYZ'
}
})
}]);
私は法1における方法とURLの値をチェックしたいと思います。
私は多くのことを試してみましたが、どれもOKではありません:
beforeEach(function(){
module('myApp');
});
describe('tests', function() {
var toto;
beforeEach(function() {
inject(function (_toto_) {
toto = _toto_;
});
});
// check to see if it has the expected function
describe('toto service has the expected properties', function() {
it('should have a method1 function', function() {
expect(angular.isFunction(toto.method1)).toBe(true);
});
it('should have a method1 function with the field method defined', function() {
expect(toto.method1.url).toBeDefined();
});
});
});
それが唯一の "定義する未定義の期待。" と私に言います2回目のテストのために。
あなたは私が望んでいることをどうやって管理できるか考えていますか?
編集:私は非常にわかりやすいとは確信していません... 誰かが間違ってそれらを変更しないかどうかを知るために、method1のurlとメソッドのパラメータの値をチェックします。
編集2:ここではqwettyの助けを借りて解決策があります。試験で
it('should perform POST request to the expected url', function() {
$httpBackend
.expectPOST('the expected url')
.respond({});
toto.paginate();
$httpBackend.flush();
});
あなたのソリューションは動作しますが、私が望むやり方ではありません...私はパラメータのURLとメソッドの値をチェックしたいと思います。あなたのソリューションでは、私は 'expectPOST'の代わりに 'expectGET'メソッドを使うこともできますが、テストはOKです。 – Marine
テストでは、メソッド 'method1'のパラメータ' url'のチェック値を書きました。 – qwetty
CD .. パラメータurlの(将来)値を変更すると、テストは失敗します。同じことがメソッド名に適用されます。別の名前はリクエストを実行せず、 'expectPOST'はマッチせず、エラーが発生します。したがって、urlとmethodの両方は、単一/小/可読テストで完全にテストされています。 – qwetty