【发布时间】:2013-03-31 18:25:12
【问题描述】:
我有一个 Angular JS 应用程序,其中包含一个模块和一些服务。我的控制器使用这些服务。在 Jasmine 测试用例中,我使用 Jasmine 的 createSpy 创建了一个服务模拟。以下是模拟的服务:
beforeEach(module(function ($provide) {
shoppingData = function () {
getAllItems: jasmine.createSpy('getAllItems');
addAnItem: jasmine.createSpy('addAnItem');
removeItem: jasmine.createSpy('removeItem');
};
$provide.value('shoppingData', shoppingData);
}));
一旦创建对象,控制器就会调用getAllItems 函数。我创建了另一个 beforeEach 块来创建控制器的对象。以下是检查getAllItems是否被调用的测试块:
it("Should call getAllItems function on creation of controller", function () {
expect(shoppingData.getAllItems).toHaveBeenCalled();
});
当我在浏览器上运行规范运行器页面时,测试失败并出现以下错误:TypeError: 'shoppingData.getAllItems' is not a function
我看到了几个类似的例子,这种测试没有任何问题。谁能指出这里缺少什么或出了什么问题?
更新:我创建了一个plunker with the part that fails
【问题讨论】:
标签: javascript unit-testing angularjs jasmine