在 angular.js 教程中,我发现了这个工厂测试示例:
模块:
angular.module('omdbModule', [])
.factory('omdbApi', function omdbApiFactory() {
return {
search: function() {
//logic to get data return movieData;
}
}
测试(它可以通过两种方式进行:传递一个带有“$provide”作为参数的匿名函数:
angular.mock.module(function($provide){
$provide.factory('omdbApi', function(){
return{
search:function(query){
return movieData;
}
}
});
或仅使用对象文字:
angular.mock.module({
'omdbApi':{
{ search:function(query){
return movieData;
}
}
});
在这两种情况下,我都不明白为什么必须在模拟中重新定义搜索功能,而不是仅仅获取工厂,然后自动访问其所有属性和方法。我认为在模拟中定义整个工厂是很好的,以防它在模块中并不真正存在,但是为什么在模块及其工厂已经定义并且它们确实存在时这样做呢?