首先,我是Karma的新手,我在应用程序中有以下代码......
$(document).ready(function() {
angular.element('#eventListController').scope().initEvents();
});
但是当我跑到业力时,我看到......
Uncaught TypeError: Cannot read property 'initEvents' of undefined
我在这里缺少什么?我正在使用健康检查测试...
describe("Sanity test for jasmine", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
更新
所以我认为我遇到了这个问题,因为现在没有DOM。我如何模拟这个DOM我想这将是真正的问题。
新版本仍然失败......
describe("Sanity test for jasmine", function() {
beforeEach(module("Events"));
describe("TailsCtrl", function () {
var scope,
controller;
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
controller = $controller;
}));
it("should assign message to hello world", function () {
expect(true).toBe(true);
});
});
});
更新
看起来我需要jasmine-jquery但它无法安装在我的本地窗口GRRRRRR
答案 0 :(得分:1)
你在测试什么?控制器?指令?您必须为测试提供真正的范围。以下是jasmine中控制器测试的示例:
describe("controller", function() {
beforeEach(function() {
$scope = $rootScope.$new();
HomeCtrl = $controller('HomeCtrl', { $scope: $scope, $rootScope: $rootScope });
$rootScope.$digest();
});
it("foobar", function() {});
});
现在你的控制器有一个真实的范围,模拟了你的测试。
答案 1 :(得分:0)
看起来我需要一些插件,这样的东西会起作用
http://a-developer-life.blogspot.com/2011/06/jasmine-part-2-spies-and-mocks.html