如何在 Jasmine 测试中测试 $scope?
How to test $scope in Jasmine test?
我正在尝试使用 Jasmine 为 Angularjs 编写单元测试。
这是我的控制器:
function HomeController($scope, fav, news, materials) {
console.log('home controller');
$scope.testMe = true;
}
module.controller('HomeController', HomeController);
和测试
describe('Home controller tests', function() {
var $rootScope, $scope, controller;
beforeEach(function() {
module('ap.designer');
inject(function($injector) {
$rootScope = $injector.get('$rootScope');
$scope = $rootScope.new();
controller = $injector.get('$controller')('HomeController', {$scope: $scope});
});
});
describe('test controller functions', function() {
it('Should return true', function() {
expect($scope.testMe).toBe(true);
});
});
});
即使我尝试测试 expect(true).toBe(true);
,测试也失败了
Jasmine、Karma、Angular 和 Angular-mocks 在我的 index.html 中的 jasmine 调试页面中,还有测试脚本。
我发现如果我删除 beforeEach() 块,expect(true).toBe(true) 通过了。
这是一个错误:
minErr/<@http://localhost:9876/base/bower_components/angular/angular.js:68:12
forEach@http://localhost:9876/base/bower_components/angular/angular.js:322:11
loadModules@http://localhost:9876/base/bower_components/angular/angular.js:4548:5
createInjector@http://localhost:9876/base/bower_components/angular/angular.js:4470:19
workFn@http://localhost:9876/base/bower_components/angular-mocks/angular-mocks.js:2954:44
angular.mock.inject@http://localhost:9876/base/bower_components/angular-mocks/angular-mocks.js:2934:35
@http://localhost:9876/base/src/js/modules/ap.designer/test/controllers/home/HomeControllerSpec.js:12:9
window.__karma__.loaded@http://localhost:9876/debug.html:42:9
@http://localhost:9876/debug.html:78:5
检查您的模块依赖关系。也许您的依赖项之一未加载到 karma 配置文件部分,因此您的模块创建失败。
我正在尝试使用 Jasmine 为 Angularjs 编写单元测试。 这是我的控制器:
function HomeController($scope, fav, news, materials) {
console.log('home controller');
$scope.testMe = true;
}
module.controller('HomeController', HomeController);
和测试
describe('Home controller tests', function() {
var $rootScope, $scope, controller;
beforeEach(function() {
module('ap.designer');
inject(function($injector) {
$rootScope = $injector.get('$rootScope');
$scope = $rootScope.new();
controller = $injector.get('$controller')('HomeController', {$scope: $scope});
});
});
describe('test controller functions', function() {
it('Should return true', function() {
expect($scope.testMe).toBe(true);
});
});
});
即使我尝试测试 expect(true).toBe(true);
,测试也失败了Jasmine、Karma、Angular 和 Angular-mocks 在我的 index.html 中的 jasmine 调试页面中,还有测试脚本。
我发现如果我删除 beforeEach() 块,expect(true).toBe(true) 通过了。
这是一个错误:
minErr/<@http://localhost:9876/base/bower_components/angular/angular.js:68:12
forEach@http://localhost:9876/base/bower_components/angular/angular.js:322:11
loadModules@http://localhost:9876/base/bower_components/angular/angular.js:4548:5
createInjector@http://localhost:9876/base/bower_components/angular/angular.js:4470:19
workFn@http://localhost:9876/base/bower_components/angular-mocks/angular-mocks.js:2954:44
angular.mock.inject@http://localhost:9876/base/bower_components/angular-mocks/angular-mocks.js:2934:35
@http://localhost:9876/base/src/js/modules/ap.designer/test/controllers/home/HomeControllerSpec.js:12:9
window.__karma__.loaded@http://localhost:9876/debug.html:42:9
@http://localhost:9876/debug.html:78:5
检查您的模块依赖关系。也许您的依赖项之一未加载到 karma 配置文件部分,因此您的模块创建失败。