【发布时间】:2015-12-18 02:04:12
【问题描述】:
在我的控制器中,我定义了以下服务:
CrudService.getAllGroups().$promise.then(
function (response) { $scope.groups = response; },
function (error) { //error code.. }
);
嗯,我想测试这个服务是否得到响应。在测试脚本中,我首先定义了一个函数来检查服务是否被定义。
测试代码:
describe('Ctrl: TestCtrl', function () {
beforeEach(module('testApp'));
var scope,
CrudService,
ctrl,
backend;
beforeEach(inject(function ($controller, $rootScope, _CrudService_, $httpBackend) {
scope = $rootScope.$new();
ctrl = $controller('TestCtrl', {
$scope: scope
});
CrudService = _CrudService_;
backend = $httpBackend;
}));
it('should defined the service getGroups', function () {
expect(CrudService.getGroups).toBeDefined();
});
//this is wrong!
it('should returns a successful response', function () {
backend.expectGET('http://localhost:63831/api/group').respond(200, 'success');
backend.flush();
});
});
我不知道如何在测试中获得响应。我是单元测试的新手,需要一些帮助。
为了更好地理解这里是服务代码:
//CrudService file:
...
return {
getAllGroups: function () {
return ResService.group.query();
}
}
...
//ResService file:
return {
group: $resource(baseUrl + '/api/group/:Id', {
Id: '@Id'
}, {})
}
有人有想法吗?
【问题讨论】:
-
expect($scope.groups).toEqual('success')似乎很明显。这是你想要的吗? -
@Pavlo 这个怎么定义?我猜
expectGET()是错误的,不是吗? -
你为什么这么认为? Angular API docs 的签名似乎是正确的,所以您不确定 URL 吗?
-
@Pavlo 我不知道,我认为这不正确。我的意图是在测试的输出中看到 te 请求成功并且服务获得状态 200
标签: angularjs unit-testing jasmine angularjs-service angularjs-controller