我目前正在尝试将 AngularJS 与 RequireJS 一起使用,但我不知道如何使测试与注入一起工作。如果没有 RequireJS,我们可以,
实施
PhoneListCtrl.$inject = ['$scope', '$http'];
var PhoneListCtrl = ['$scope', '$http', function($scope, $http) {
/* constructor body */
}];
测试
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
$httpBackend = _$httpBackend_;
$httpBackend.expectGET('phones/phones.json').
respond([{name: 'Nexus S'}, {name: 'Motorola DROID'}]);
scope = $rootScope.$new();
ctrl = $controller(PhoneListCtrl, {$scope: scope});
}));
但是,当我们使用 RequireJS 时,我们可以将控制器定义如下,
演示控制器.js
define(["dependency"], function() {
/* constructor body */
});
使用此控制器时,我们将其添加为依赖项之一,并且没有变量声明。(让我以“控制器”为例,因为我们最好将其称为“服务”)
一些JS.js
define(["demoController"], function(controller) {
controller.method();
});
我的问题
在使用 RequireJS(AMD) 时,我们如何将 $http、$scope(或其他)注入目标控制器或服务进行测试?
任何帮助将不胜感激。