Angularjs 如何在控制器内测试$scope.method?
我试过使用Spies,试着通过调用函数声明变量,但什么都不起作用。我是单元测试新手,我一定是误解了什么 我的函数单元测试Angularjs 如何在控制器内测试$scope.method?,angularjs,unit-testing,jasmine,karma-runner,Angularjs,Unit Testing,Jasmine,Karma Runner,我试过使用Spies,试着通过调用函数声明变量,但什么都不起作用。我是单元测试新手,我一定是误解了什么 我的函数单元测试 describe('search treatments method',function(){ it('search treament should have been called',function(){ testSearch = new scope.searchTreatments(); spyOn(testSearch,'search
describe('search treatments method',function(){
it('search treament should have been called',function(){
testSearch = new scope.searchTreatments();
spyOn(testSearch,'searchTreatments');
expect(testSearch.searchTreatments).toHaveBeenCalled();
});
});
我想测试的方法
$scope.searchTreatments = function(value){
return Treatment.find(value).then(function(values){
return values;
});
};
处理是另一个文件中的工厂
app.factory('Treatment',['$http','$q',function($http,$q){
function _getTreatment(val) {
return $http.get('/api/providers_medical_services_services', {
params: {
type: 'treatment',
treatment: val
}
}).then(function(response){
return response.data;
});
}
return {
find: _getTreatment
};
}]);
基本上,我只想在testsearch上创建一个spy,看看它是否被调用。如果我没有错的话,你必须模拟工厂 您可能必须使用angular-mocks.js来模拟服务或工厂,以便在Karma中进行测试 如果您已添加控制器和服务文件,请检查您的karma.config
-谢谢我添加了所有控制器和服务。你说的模仿是什么意思?我看到这个术语四处游荡,我不理解它是一种类似于在测试用例中创建模拟服务、服务或工厂的东西,可以模拟该服务的主要功能。然后必须将它们注入测试用例控制器访问: