Unit testing Karma Jasmine测试注射无效
我是karma单元测试的新手,我在一个简单的离子应用程序中遇到了这个问题 这是我的控制器:Unit testing Karma Jasmine测试注射无效,unit-testing,angular,ionic-framework,karma-jasmine,inject,Unit Testing,Angular,Ionic Framework,Karma Jasmine,Inject,我是karma单元测试的新手,我在一个简单的离子应用程序中遇到了这个问题 这是我的控制器: angular.module('starter').controller('AccountCtrl', function ($scope) { $scope.settings = { enableFriends: true }; $scope.dummyFunction = function () { console.log("Just do not
angular.module('starter').controller('AccountCtrl', function ($scope) {
$scope.settings = {
enableFriends: true
};
$scope.dummyFunction = function () {
console.log("Just do nothing!");
}
});
这是我的单元测试文件:
describe('AccountCtrl', function () {
var scope, createController;
beforeEach(module('starter'));
console.log("0");
beforeEach(function () {
console.log("1");
})
beforeEach(inject(function ($rootScope, $controller) {
console.log("2");
scope = $rootScope.$new();
controller = $controller('AccountCtrl', {
'$scope': scope
});
}));
it('should do stuff', function () {
console.log("3");
expect("Hello!").toBeDefined();
});
});
此时,当我运行测试时,我得到:
PhantomJS 2.1.1 (Mac OS X 0.0.0) LOG: 'WARNING: Tried to load angular more than once.'
PhantomJS 2.1.1 (Mac OS X 0.0.0) LOG: '0'
LOG: '1'
LOG: '3'
PhantomJS 2.1.1 (Mac OS X 0.0.0) AccountCtrl should do stuff FAILED
forEach@/Users/eduard.lache/Documents/dummyProjects/unitTestingAPP/www/lib/ionic/js/ionic.bundle.js:13696:24
loadModules@/Users/eduard.lache/Documents/dummyProjects/unitTestingAPP/www/lib/ionic/js/ionic.bundle.js:17883:12
createInjector@/Users/eduard.lache/Documents/dummyProjects/unitTestingAPP/www/lib/ionic/js/ionic.bundle.js:17805:30
workFn@/Users/eduard.lache/Documents/dummyProjects/unitTestingAPP/www/lib/angular-mocks/angular-mocks.js:2353:60
/Users/eduard.lache/Documents/dummyProjects/unitTestingAPP/www/lib/ionic/js/ionic.bundle.js:17923:53
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.004 secs / 0.011 secs)
正如您从console.log消息中看到的,没有调用inject函数,问题是我不知道为什么会这样,为什么这会使我的测试失败,因为测试需要定义字符串“Hello!”,它就是这样
如果删除包含注入的beforeach,则测试成功
我的目标是做一个测试,验证$scope.dummyFunction()是否已被调用,以及$scope.settings是否已定义。
i、 e:
我是新的测试节点,我刚刚解决了与您相同的问题。若你们能帮忙,我会解决这个问题,检查应用程序的所有依赖项,并将它们放入karma的配置文件中。然后,我检查所有依赖项(“dev”也已安装并运行karma,这是可行的=D 我希望它能帮助别人。 =)
it('should do stuff', function () {
var ctrl = controller();
ctrl.dummyFunction();
expect(ctrl.dummyFunction).toHaveBeenCalled();
expect(ctrl.settings).toBeDefined();
});