我正在尝试在我的 Angular 应用程序中测试 Controller 。每当我调用 $controller
方法时,我都会返回一个空对象。
相关测试
describe("myCtrl", function() {
beforeEach(module("myMod"));
var myCtrl, scope;
beforeEach(inject(function($controller, $rootScope) {
scope = $rootScope.$new();
myCtrl = $controller('myCtrl', {$scope: scope});
}));
it("$scope.compute", function() {
expect(myCtrl.compute(1,1,1)).toBe(1);
});
});
Controller 相关部分:
.controller('myCtrl', ["$scope","serviceA", "serviceB", function($scope, serviceA, serviceB){
$scope.compute = function compute(a, b, c) {
return serviceA.calc(a, b, c);
};
}])
每当我运行测试时,都会收到一条错误消息:undefined is not a function
。
如果我在调用该方法之前 console.log(JSON.stringify(myCtrl))
,它会显示 myCtrl
是一个空对象({}
)。
我相信我的问题是对 $controller
的调用,或者我可能需要以不同的方式设置我的范围。
摘要:如何进行单元测试以便调用 Controller 内的方法?
最佳答案
函数/方法不在 Controller 中,而是在$scope
中,所以它应该是:
it("$scope.compute", function() {
expect(scope.compute(1,1,1)).toBe(1);
});
关于javascript - 如何以 Angular Testing Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979080/