测试Angular.js控制器,而不使用Jasmine嘲笑工厂
Testing an Angular.js controller without mocking factory with Jasmine
我正在尝试对包含dataService工厂的角度控制器进行单元测试。问题是我得到了错误TypeError:"undefined"不是对象(正在评估"myScope.data.test")
有人看到我做错了什么吗?
/// <reference path="../scripts/jasmine.js" />
/// <reference path="../scripts/angular.js" />
/// <reference path="../scripts/angular-mocks.js" />
var app = angular.module('myApp', []);
app.factory("dataService", ["$http", "$q", function ($http, $q) {
var _test = function () {
return "Hello world";
};
return {
test: _test,
};
}]);
var testController = ["$scope", "dataService",
function ($scope, dataService) {
$scope.data = dataService; // This is similar to a DAL
}];
describe('Tests my controller without mocks', function () {
var myScope;
var myDataService;
beforeEach(inject(function ($rootScope, $httpBackend, $controller) {
angular.module('myApp');
myScope = $rootScope.$new();
myDataService = $rootScope.dataService;
$controller('testController', {
$scope: myScope,
dataService: myDataService
});
}));
it('should say Hello', function () {
expect(myScope.data.test).toBe("Hello world");
});
});
您需要使用angular.mok.module('myApp')引导您的应用程序在beforeEach方法中。
从测试名称来看,您似乎想要使用真正的服务("无模拟")。为了做到这一点,您应该从对$controller的显式调用中省略dataService属性。它将连接真实的实例。
相关文章:
- Angularjs工厂注入错误
- 使用jasmine模拟对服务器的调用
- 如何将参数传递到angularJs中的工厂
- 为什么只有工厂在棱角分明的网站上被提及
- 为什么jasmine期望不验证是否抛出了错误
- 模拟chrome.storage.local函数使用Jasmine
- AngularJS:$q.dedefe()不能由工厂方法共享
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何使用异步调用更改工厂的变量
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- jasmine 2.0测试angularjs的工厂方法,这是一个承诺
- AngularJS工厂在Karma与Jasmine进行测试
- 如何在使用Jasmine测试工厂时模拟$compile函数
- 测试Angular.js控制器,而不使用Jasmine嘲笑工厂
- 在运行使用Widget工厂构建的jQuery插件的jasmine规范时出现TypeError
- 用Karma (Jasmine)测试AngularJS工厂
- Jasmine单元测试AngularJS工厂的两个依赖项($http和另一个返回promise的工厂)
- Jasmine和AngularJS-当函数用作依赖项时,如何测试工厂函数
- 在Jasmine中使用$q的模拟棱角工厂