0
私はジャスミンスパイで単体テストケースを作成しようとしています。以下は私のサービスコードです。以下はジャスミンスパイ:returnValueでエラーを取得する
function reset(someParam) {
var deferred = $q.defer();
svcTypes.getTasksWithRoles().then(function (types) {
if (types.HadError) return;
// do some stuff..
deferred.resolve(results);
}, function (errorResponse) {
deferred.reject(errorResponse);
});
return deferred.promise; }
私のユニットテストケースである:
以下describe('tests for svcWorkordertypes', function() {
beforeEach(angular.mock.module('workorders.service'));
beforeEach(angular.mock.module('workordertypes.service'));
var svcWorkordertypes;
var svcTypes;
var $q, $httpBackend;
beforeEach(angular.mock.inject(function (_svcWorkordertypes_, _svcTypes_, _$q_, _$httpBackend_) {
svcWorkordertypes = _svcWorkordertypes_;
svcTypes = _svcTypes_;
$q = _$q_;
$httpBackend = _$httpBackend_;
}));
//This is working fine.
it('all controls should be set', function() {
expect(svcWorkordertypes).toBeDefined();
expect(svcTypes).toBeDefined();
expect($q).toBeDefined();
expect($httpBackend).toBeDefined();
});
it('test reset method', function() {
//Arrange
var someParam = 'test';
var types = [{ RoleList: 'newRoleList', isHeader: true, Roles: 'testRole' }];
$httpBackend.when("GET", 'null/tasks/types?$select=IncludeRoles').respond(200, JSON.stringify(types));
spyOn(svcTypes, 'getTasksWithRoles').and.returnValue(function() {
var deferred = $q.defer();
deferred.resolve(JSON.stringify(types));
return deferred.promise;
});
//Act
var result = svcWorkordertypes.reset(selectedRoleName);
//Assert
result.then(function (res) {
console.log(res + ' res output...');
//expect(JSON.stringify(res)).toEqual(JSON.stringify(types));
});
//expect(svcTypes).toBeDefined();
}) });
は誤りです:
私もcallFakeとの多くの方法を試してみました。私はstackoverflowで同様の質問を見つけましたが、それは私を助けませんでした。
あなたが返事をestusありがとうございました。今、私はそのエラーを取得していません。しかし、それはまだ約束のゼロオブジェクトを返しています。デバッガは「// do some stuff」コードに入っていません。最初のデバッガは "svcTypes.getTasksWithRoles()"に行き、その後に文の最後、つまりreturn deferred.promise;の最後に移動します。 – KiddoDeveloper