我正在为我的AngularJS应用程序的控制器创建单元测试。 在myapp.run我注射和使用的工厂,叫UsersFactory,在某种程度上是这样的:当用Jasmine测试时,全局注入AngularJS工厂样机
myApp.run(['$rootScope','UsersFactory', function ($rootScope,UsersFactory) {
UsersFactory.getMe().then(function(data)
{
//..
});
}]);
我创建了一个模拟的UsersFactory称为UsersFactoryMock。它与UsersFactory有相同的方法,但是实现当然是不同的(假的)。
我想注入UsersFactoryMock,以便能够myApp.run使用它而不是UsersFactory。
我试图这样做使用beforeEach:
beforeEach(module(function ($provide, $injector)
{
$provide.service("UsersFactory", $injector.get("UsersFactoryMock"));
}));
但运行测试,它告诉我,
Error: [$injector:modulerr] Failed to instantiate module function ($provide) due to: ReferenceError: UsersFactoryMock is not defined"
我怎么能实现我的目标是什么?
在此先感谢。
如果我的模拟对象有依赖关系? – 2014-12-12 14:38:19
我认为这是试图测试太多。模拟的重点不在于重建原始实现,而是让您测试依赖于模拟出的模块的代码,而不用担心它的内部实现。 – user2943490 2014-12-12 22:27:09