質問のより単純なバージョンを解釈しようとしました。
1)コントローラー(myController)メソッド(減算)のユニットテストを書いています。
2) httpbackend を使用して http をモックする 減算メソッドで http の成功関数に 200 の応答を返し、ダミーの DELETE URL の成功関数でその値を下げたい (テスト環境の外では常に成功する)。
3)しかし、expect(scope.testvalue) は 5 のみであることがわかります。どんな助けでも大歓迎です。
'use strict';
describe('MyController UNIT TEST specs ', function () {
var scope, http, location, ctrl, httpBackend;
beforeEach(module('myApp', 'ui.router'));
beforeEach(inject(function ($rootScope, $http, $controller, $httpBackend) {
scope = $rootScope.$new();
http = $http;
httpBackend = $httpBackend;
ctrl = $controller('myController', { $scope: scope, $http: http});
httpBackend.when('DELETE', 'url').respond(200, 'fsdf');
}));
afterEach(function () {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
it('test 1 : Subtract 1 from a value enter code here` using subtract method in myController', function () {
httpBackend.when('DELETE', 'url').respond(200);
var testvalue = 5;
scope.subtract(testvalue);
expect(testvalue).toBe(4);
});
});
angular.module("myApp").controller("myController", function ($scope, $http) {
$scope.subtract = function (testValue) {
$http({
method: 'DELETE',
url: 'url'
}).then(function (data) { //success
//irrespective of data subtract 1 here
testValue - 1 = 4;
}, function (errResult) { //fail
console.log(errResult);
});
}
})
表示されるエラーは (予想される) エラーです: false が true であると予想されます。