【发布时间】:2015-01-07 15:36:05
【问题描述】:
我正在尝试开始使用 karma-jasmine,但我想知道为什么这个测试会失败:
it("should call fakeFunction", function() {
spyOn(controller, 'addNew');
spyOn(controller, 'fakeFunction');
controller.addNew();
expect(controller.fakeFunction).toHaveBeenCalled();
});
在我之前为此测试设置的控制器中,我有以下内容:
function addNew() {
fakeFunction(3);
}
function fakeFunction(number) {
return number;
}
addNew 和 fakeFunction 都使用:
vm.addNew = addNew;
vm.fakeFunction = fakeFunction;
但是,测试失败并显示以下内容:
Expected spy fakeFunction to have been called.
如果我在测试中调用该函数,我可以使测试通过。但是,我希望可以测试 fakeFunction 是否被另一个函数调用。实现这一目标的正确方法是什么?
更新:
//test.js
beforeEach(function() {
module("app");
inject(function(_$rootScope_, $controller) {
$scope = _$rootScope_.$new();
controller = $controller("CreateInvoiceController", {$scope: $scope});
});
});
如果我测试类似:
it('should say hello', function() {
expect(controller.message).toBe('Hello');
});
如果我将以下内容放入控制器中,则测试通过:
var vm = this;
vm.message = 'Hello';
我只想知道如何测试一个公共函数是否被另一个函数调用。
【问题讨论】:
标签: angularjs jasmine karma-runner karma-jasmine