我正在尝试为一个简单的项目建立一个基本的单元测试环境,但是我遇到了一个奇怪的障碍,经过数小时的研究后我无法克服这个障碍.
出于某种原因,我Error: NETWORK_ERR: XMLHttpRequest Exception 101直接从EJS返回尝试使用XHR加载模板,但只是偶尔使用一次.
案例很简单,我有一个骨干应用程序,实例化一个呈现EJS模板的骨干视图.这看起来像这样:
BackboneView = Backbone.View.extend({
initialize: function() {
this.template = new EJS({url: '/app/views/root/root.template.ejs'});
}
});
Run Code Online (Sandbox Code Playgroud)
要设置grunt-contrib-jasmine,我的Gruntfile中有以下代码段:
jasmine: {
cms: {
src: "app/**/*.js"
options: {
specs: "tests/fe/spec/*Spec.js",
vendor: [
"vendor/jquery/dist/jquery.js",
"vendor/underscore/underscore.js",
"vendor/backbone/backbone.js",
"vendor/ejs/ejs.js",
],
keepRunner : true,
outfile : "tests/fe/_SpecRunner.html",
host : "http://0.0.0.0:8000"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我大部分时间都可以运行我的测试套件:
$ grunt jasmine
Running "jasmine:cms" (jasmine) task
Testing jasmine specs via PhantomJS
log: came in request!, /app/views/root/root.template.ejs
log: 200
log: /app/views/root/root.template.ejs
website.header
header.test()
- test should return …Run Code Online (Sandbox Code Playgroud) 该项目是:Backbone + Require + Underscore + Grunt + Grunt-Contrib-Jasmine + Grunt-Lib-PhantomJS
所以我一直在与两个严重的问题作斗争.我知道phantomjs运行正常等,因为如果我包含我的应用程序src文件,我会遇到大量的运行时错误.我甚至已经正确地命令了deps,以便Backbone不会_被定义等等.
1)当我包含我的应用程序src时,我收到can't find variable: define所有源文件的错误.我已经尝试将需求放入src[]isntead,vendor[]甚至尝试加载一个包含deps的RequireJSConfig.js.
2)这是cruncher:我很确定我正确地指着我的spec文件.如果我只指向一个测试,它仍然说No Specs Executed. Is there a configuration error?在我的情况下,我只是指向我UserModelUnitTest.js,这很简单.它不会执行.我绝对疯了!
Spec(UserModelUnitTest.js):
describe('User Model Unit Tests', function() {
var USER_MODEL,
USER_CLASS,
JSON_OBJ;
beforeEach(function() {
USER_CLASS = testr('models/user/User', {});
});
afterEach(function() {
USER_MODEL = null;
USER_CLASS = null;
JSON_OBJ = null;
});
describe('Given a json object', function() {
it('should create a valid …Run Code Online (Sandbox Code Playgroud) javascript backbone.js jasmine gruntjs grunt-contrib-jasmine
所以我在PhantomJS中运行了grunt-contrib-jasmine运行规范.有没有办法配置它所以它总是输出_specRunner.html(在浏览器中运行)而不是仅在出错时?
我在doc中看到了这个,但是如何配置这个标志呢?
旗
名称:构建
打开此标志以构建SpecRunner html文件.这在对模板进行故障排除,在浏览器中运行或作为监视链的一部分时非常有用
watch: {
pivotal : {
files: ['src/**/*.js', 'specs/**/*.js'],
tasks: 'jasmine:pivotal:build'
}
}
Run Code Online (Sandbox Code Playgroud)