回数関数は(これはもちろん、あなたが言った機能をスパイしていると仮定している)、このように呼ばれているチェックすることが可能である:
expect(myservice.someFunction.calls.count()).toBe(someNumber);
TSでジャスミンテストを書くことはJSと非常によく似ています。私が経験した唯一の違いは構文だけです。あなたは今あなたの変数のための強力な型付けをするのではなく、それを行う代わりに、関数を使ってブロックを記述すると太い矢印の構文を使用します。だからではなく、
describe('Test', function() {
it('true is true', function() {
expect(true).toBe(true);
})
})
のあなたはここで私はTSで書いたテストの小さな不自然な例です。この
describe('Test',() => {
it('true is true',() => {
expect(true).toBe(true);
})
})
のようにテストを書きます。
namespace UserList.Services.Tests {
describe("UserList: GetEntityTypeService",() => {
let service: UserList.Services.GetEntityTypeService;
beforeEach(() => {
angular.mock.module("App.UserList.Module");
angular.mock.module(($provide: angular.auto.IProvideService) => {
$provide.service("UserList.Services.GetEntityTypeService", UserList.Services.GetEntityTypeService);
});
inject(($injector: angular.auto.IInjectorService) => {
service = <UserList.Services.GeteEntityTypeService>($injector.get("UserList.Services.GetEntityTypeService"));
});
});
it("should be defined",() => {
expect(service).toBeDefined();
});
});
}
は、TSは、JSのスーパーセットで覚えておいてください。したがって、有効なJSは有効なTSです。もしあなたが本当にやりたいと思っていれば、あなたは普通のJSでテストを書くことができます。
懸念を分けることについてのご質問は、あなたが正しい方向にいると思います。ここに私が従うパターンがとてもうまくいきます。
- オブジェクトをタイプと名前で記述します。
- オブジェクトのモジュールをロードします。
- モックモジュールを必要に応じてロードします。
- メソッドに依存性とスパイを注入します。
- オブジェクトを初期化する:
- サービスは注入する必要があります。
- コントローラは、$ controllerサービスを使用してインスタンス化されます。
- ディレクティブを$コンパイルする必要があります。
- 記述ブロックにグループ化された期待値を書き込みます。
サービス、イベント、期待される結果に対する状態同期、非同期呼び出し、および必要に応じて期待される結果をテストします。
本当にありがとうございます。 – SwimmingG