1
我有一种服务,有大约十几种方法挂起它。我正在设置我的第一轮单元测试。这里是一个的工作一个简单的例子:
it('should have a working getter/setter for SummaryLayoutBn', function() {
layoutService.setCurrentSummaryLayoutBn('TEST_BN');
summaryLayoutBn = layoutService.getCurrentSummaryLayoutBn();
expect(summaryLayoutBn).toEqual('TEST_BN');
});
然后我用$ httpBackend返回一些嘲笑JSON数据:
it('should have a working getLayout function', function() {
$httpBackend.expectGET('/b/json/layout/TEST_BN').respond(defaultSystemLayout);
expect(layoutCtrlScope.layoutModel.layout).toBeUndefined();
layoutCtrlScope.loadLayoutFromBn('TEST_BN');
$httpBackend.flush();
expect(layoutCtrlScope.layoutModel.layout).toBe(defaultSystemLayout)
});
这是工作,但我不再打电话给我服务,我在调用该服务的控制器中调用一个函数。这是正确的方法吗?它允许我测试layoutCtrlScope.layoutModel.layout
,但感觉像是控制器的测试。
这里是布局服务
getLayout: function (bn) {
utilService.showLoading();
var url = baseUrl.generateUrl(baseUrl.layout, bn);
return $http.get(url).
success(function (data, status, headers, config) {
utilService.hideLoading();
}).
error(function (data, status, headers, config) {
errorHandlingService.handleGenericError(status);
utilService.hideLoading();
});
}
而且控制器功能:
$scope.loadLayoutFromBn = function (layoutBn) {
var layout = layoutService.getLayout(layoutBn);
layout.then(function (data) {
$scope.layoutModel.layout = data.data;
});
}