更新
我正在通过业力模块寻找代表chrome并尝试切换到firefox失败的代码,如果有人知道我应该在哪里看,我也会非常开心。
我希望有人熟悉有角的种子。我写了一个小角度js网络应用程序,我想为它写一些测试,所以我今天学习茉莉和业力。我发现有角度的种子安装了这些库,我花了一天时间将我的项目移动到有角度的种子。
我在运行单元测试时遇到问题,我收到错误
Chrome 32.0.1700 (Mac OS X 10.8.4) ERROR
Uncaught Error: Bootstrap requires jQuery
有趣的是,当我启动服务器时,在chrome dev控制台中,jquery文件实际上已正确加载到我的网络上,我确保它们来自bootstrap.min.js
在我的index.html文件中,我在底部有
这些脚本<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script src="js/vendor/bootstrap.min.js"></script>
在身体结束之前
该网站已启动并正在运行,Chrome开发者控制台上没有任何错误。
angular seed附带了一个package.json文件(我想运行npm install来安装angular种子目录中的模块)
我包含了jquery并且无论如何都安装了jquery模块,这是我的第二次尝试。
"jquery" : "~2.1.0-rc1"
我甚至下载了jquery未压缩文件,并从我的js / vendor文件夹中链接到我的index.html。我已经取消了它。这些文件仍然存在于我的js / vendor文件夹中。
我在运行此
后收到上述错误scripts/test.sh
这可能是一个问题,我不太确定。我会看看我是否可以切换到使用firefox进行测试。任何有关解决此问题的帮助或想法表示赞赏。
如果它有帮助,这是我的controllersSpec.js文件
'use strict';
/* jasmine specs for controllers go here */
describe('RootPage', function(){
var rootCtrl;
beforeEach(module("backpageApp"))
beforeEach(inject(function ($controller) {
rootCtrl = $controller("RootCtrl");
}))
describe("RootCtrl", function() {
it("should have listings", function() {
expect(rootCtrl.listings).toBe(true)
})
})
})
答案 0 :(得分:1)
您需要在karma配置文件中列出测试依赖项。如果你看一下/scripts/test.sh的内容,你可以看到它所做的就是这个......
$BASE_DIR/../node_modules/karma/bin/karma start $BASE_DIR/../config/karma.conf.js $*
..所以它调用karma启动脚本并将其传递给karma.conf.js。打开karma.conf.js文件,您可以看到角度种子项目附带的依赖项。 jQuery不存在,因为Angular不需要它,但是你的应用程序需要它。你应该在那里添加你的bootstrap.js文件......
files : [
'app/lib/angular/angular.js',
'app/lib/angular/angular-*.js',
'test/lib/angular/angular-mocks.js',
'app/js/**/*.js',
'test/unit/**/*.js'
],
我会下载jquery文件,因此您可以指向本地副本。例如......
files : [
'app/lib/jquery/jquery.js',
'js/vendor/bootstrap.min.js',
'app/lib/angular/angular.js',
'app/lib/angular/angular-*.js',
'test/lib/angular/angular-mocks.js',
'app/js/**/*.js',
'test/unit/**/*.js'
],
答案 1 :(得分:0)
我不确定您是否已遵循所有步骤,但无论如何这些都是运行Angular-Karma-Jasmine的步骤:
您需要安装nodejs,karma在节点上运行
您需要从命令窗口安装来自Node Packaged Modules的业力执行:
npm install -g karma
如果您打算使用Chrome和Firefox运行此功能,并且您在Windows上运行此功能,则需要添加2 environment variables:
CHROME_BIN = [Crome installation path/chrome.exe] FIREFOX_BIN =[Firefox installation path/firefox.exe]
4.执行后,使用命令窗口返回项目文件夹:
karma init
只需按Enter键直到完成;底线,这将创建一个名为:
karma.config.js
的文件
在我的项目中,这个文件看起来像这样,你的文件可能会包含一些有关不同设置的有用评论:
module.exports = function(config) { config.set({ basePath: '', frameworks: ['jasmine'], files: [ '../app/*.js', '../app/lib/angular.js', '../app/lib/angular-route.min.js', '../app/lib/angular-mocks.js', '../app/app.js', 'controllers/*.js', 'services/*.js', ], exclude: [ ], reporters: ['progress'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome','Firefox'], captureTimeout: 60000, singleRun: false }); };
重要提示:请确保在配置中包含角度模拟,inject
功能在该模块上。
5.返回到您的命令窗口,浏览karma.config.js
文件所在的位置并执行:
karma start
警告: 2014年1月21日之前下载的Karma版本使用jasmine 1.3.1如果您在项目中包含更新版本的jasmine(可能是2.0.0),您可能会发现{{3}在那个版本和karma-jasmine使用的版本之间。
此时你会很高兴。
关于从SpecRunner文件中运行jasmine可能存在一些差异,但我想这可能是另一个问题的主题。