私はサービスを呼び出し、いくつかの変数を設定するコントローラを持っています。これらの変数が応答に設定されることをテストしたい。
マイコントローラー:
tankService.getCurrentStats().success(function (response) {
$scope.stats.tankAvgHours = response.tankAvgHours;
$scope.stats.stillAvgHours = response.stillAvgHours;
$scope.stats.stillRemaining = response.stillRemaining;
$scope.stats.tankRemaining = response.tankRemaining;
$scope.stats.loaded = true;
});
私のテスト:
...
var STATS_RESPONSE_SUCCESS =
{
tankAvgHours:8,
stillAvgHours:2,
stillRemaining: 200,
tankRemaining:50
};
...
spyOn(tankService, "getCurrentStats").and.callThrough();
...
it('calls service and allocates stats with returned data', function() {
expect($scope.stats.loaded).toBeFalsy();
$httpBackend.whenPOST('../services/tanks/RelayTankService.asmx/getCurrentStats').respond(200, $q.when(STATS_RESPONSE_SUCCESS));
tankService.getCurrentStats()
.then(function(res){
result = res.data.$$state.value;
});
$httpBackend.flush();
expect($scope.stats.tankAvgHours).toEqual(result.tankAvgHours);
expect($scope.stats.stillAvgHours).toEqual(result.stillAvgHours);
expect($scope.stats.stillRemaining).toEqual(result.stillRemaining);
expect($scope.stats.tankRemaining).toEqual(result.tankRemaining);
expect($scope.stats.loaded).toBeTruthy();
});
結果は私のスコープ変数は定義されていませんし、私の嘲笑応答データを等しくしていないということです。私は成功関数をテストすることができますので、変数を正しく入力する虚偽の値を渡すことは可能ですか?
ありがとうございます!
不思議なことに、私はテストに関して他の投稿を読んでいました。私はこれを理解しようとしていました。私はあなたが私を正しい軌道に乗せたと思うが、私はまだ誤りがある。 TypeError:未定義のプロパティ 'tankAvgHours'を読み取ることができません – enfrost
私は、データを追加する必要がありました。嘲笑されたレスポンスオブジェクトにはうまくいきました。そんなにシッダースありがとう! – enfrost
恐ろしい!お力になれて、嬉しいです。 –