gpt4 book ai didi

unit-testing - Karma Jasmine 测试注入(inject)不起作用

转载 作者:太空狗 更新时间:2023-10-29 19:34:38 24 4
gpt4 key购买 nike

我是 karma 单元测试的新手,我在一个简单的 Ionic 应用程序中遇到过这个问题。

这是我的 Controller :

  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 !”有待定义,它是。

如果我删除包含注入(inject)的 beforeEach,则测试成功。

我的目标是进行测试以验证 $scope.dummyFunction() 已被调用并且 $scope.settings 已定义。即:

  it('should do stuff', function () {
var ctrl = controller();
ctrl.dummyFunction();
expect(ctrl.dummyFunction).toHaveBeenCalled();
expect(ctrl.settings).toBeDefined();
});

最佳答案

我是新的测试节点,我刚刚解决了你遇到的同样问题。如果可以的话,我解决了这个问题检查应用程序的所有依赖项并将它们放在 karma 的配置文件中。然后,我检查是否安装了所有依赖项(还有“dev”)并运行 karma,这有效! =D

希望对大家有所帮助。=)

关于unit-testing - Karma Jasmine 测试注入(inject)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com