angular アプリの単体テストを書き始めました。ただし、コントローラーの初期化とテストに多くの定型コードを使用しているように思えます。
この単体テストでは、関数の実行時にスコープからのモデルが Api に送信されるかどうかをテストします。
これには 20 行のコードが必要でした。これにより、1 つのことだけを行う単体テストを作成するのが不便になります。コードサイズをより小さなチャンクにするためのヒントはありますか?
これは私の現在の単体テストです:
'use strict';
describe('controllers', function(){
beforeEach(module('kronos'));
describe('CustomerSignupCtrl', function() {
it('should send customer to Api on submit', inject(function($controller) {
var scope = {};
var $location = {};
var Api = {
signupCustomer: function(customer) {
expect(customer).toEqual({attrs: "customerdata"});
return {
success: function() { return this; },
error: function() { return this; }
};
}
};
var ctrl = $controller('CustomerSignupCtrl', {
$scope: scope,
$location: location,
Api: Api});
scope.customer = {attrs: "customerdata"};
scope.signup();
}));
});
});
特に気に入らないのは以下の点
- すべての依存関係を初期化する必要があり、それらを使用するかどうかは問題ではありません
- API は、コントローラーが promise を期待しているため、必要なだけの promise を返します
- コントローラーを初期化する必要があります。
このコードをより短く、より明示的にするにはどうすればよいですか?
編集$location
:この単体テストのサービスを無視できることに気付きました。すばらしい
Edit2 : angular-appについて知りました。これは、優れた実践例のアプリとして機能します。そこにはjasmineの仕様があり、とてもよく書かれています。