Javascript 使用Karma和Jasmine测试AngularJS服务
好吧,我花了将近3个小时来想办法。我一直在 ReferenceError:找不到变量:模块 当我尝试运行我的业力测试时。我已经阅读了其他相关问题,并正确地排序了文件,但我仍然得到了那个错误。虽然我认为我需要的模块函数来自angular.mock.js文件,但它也是在该文件中定义的,并且应该被引用 下面是一些重要的片段,可以更好地说明我的情况 karma.conf.jsJavascript 使用Karma和Jasmine测试AngularJS服务,javascript,angularjs,jasmine,karma-jasmine,Javascript,Angularjs,Jasmine,Karma Jasmine,好吧,我花了将近3个小时来想办法。我一直在 ReferenceError:找不到变量:模块 当我尝试运行我的业力测试时。我已经阅读了其他相关问题,并正确地排序了文件,但我仍然得到了那个错误。虽然我认为我需要的模块函数来自angular.mock.js文件,但它也是在该文件中定义的,并且应该被引用 下面是一些重要的片段,可以更好地说明我的情况 karma.conf.js // list of files / patterns to load in the browser files:
// list of files / patterns to load in the browser
files: [
'public/vendor/angular-1.2.0-rc2.js',
'public/vendor/angular-test.js',
'public/vendor/jasmine-helpers.js',
'public/vendor/angular.mocks.js',
'public/lib/**/*.js',
'public/lib/*.js',
'tests/*Spec.js'
],
规格文件
describe("In the Weather Service Module", function(){
var YWS, scope, mockWeatherService;
beforeEach(angular.mock.module('NPWeatherWidget'));
beforeEach(inject(function($rootScope,_YahooWeatherService_){
YWS = _YahooWeatherService_;
scope = $rootScope;
mockWeatherService = jasmine.createSpyObj('YahooWeatherService',['getwoeid','getData']);
module(function($provide){
$provide.value("YahooWeatherService",mockWeatherService);
})
}));
//utility tests
it("Object should be converted to query string", function(){
console.log({name:"larry",age:20}.paramify());
expect({name:"larry",age:20}.paramify()).toBe("name=larry&age=20");
})
it("should be converted to a query string", function(){
expect(YWS).toBeDefined();
});
it("GetWoeID should return a bunch of objects with woeid included",function(done){
expect({}).toBeDefined();
});
});
任何形式的指向正确方向的指针都将非常受欢迎。不要使用angular.mock.module'NPWeatherWidget',只需在beforeach方法中尝试module'NPWeatherWidget'。谢谢@adamK,事实证明,真正的问题是我在angular-mock.js和实际的angular文件之间使用了不兼容的版本。当我从code.angularjs.org找到angular 1.2.0-rc2的正确angular-mock.js文件时,问题就消失了