gpt4 book ai didi

unit-testing - 使用 Jasmine 和 Karma 测试一个重要的 AngularJS 应用程序

转载 作者:行者123 更新时间:2023-11-28 20:17:24 28 4
gpt4 key购买 nike

我正在开发一个非常重要的应用程序,具有以下文件夹结构:

build (required files such as angular.js)
Gruntfile.js
karma.conf.js
logs/
node_modules/
src/
- app/
- app.js
- module_name/
- module.js
- controllers/
- controller1.js
- controller2.js
- views/
- view1.html
- assets/
- 1.jpg
- styler.css
- components/ (plugged in modules [angular-ui, etc])
- index.html

我的每个 Controller 都附加到它们的父模块。然后我的 app.js 文件中需要该模块。

我已经尝试编写一些单元测试,但我似乎一直在依赖性方面遇到麻烦,因为我尝试测试的 Controller 需要它的模块,然后该模块需要另一个模块,等等。

我的问题有几个部分:

  1. 如何构建我的 karma.conf.js 文件以包含必要的文件?具体这部分配置:

    files: [
    'files_to_be_tested.js',
    ]
  2. 如何使用 Jasmine 编写具有所有正确依赖项的单元测试?例如,我运行以下测试

Javascript

using 'strict'
describe('my Module', function() {
describe('myController', function() {
var ctrl, scope;

beforeEach(module('myModule'));

beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('myController', { $scope: scope });
}));

it('should work', function() {
// Execute functionality
})
})
})

但我不断收到错误:Unknown provider: $stateProvider,我认为这是来自加载模块的路由配置。

我开始怀疑我是否正确分离了我的 Controller ?

最佳答案

回答第二个问题:

Unknown provider: $stateProviderui.router 模块没有被加载导致的。为了解决这个问题,添加beforeEach(module('ui.router'))

问题出现是因为你正在加载的 Controller 试图注入(inject)$state

确保 ui.router Javascript 文件在 karma.conf.jsfiles 列表中,否则模块不会可用于业力。

关于unit-testing - 使用 Jasmine 和 Karma 测试一个重要的 AngularJS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436726/

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