我很难让JSTD加载一个夹具HTML文件。
我的目录结构是:
localhost/JsTestDriver.conf
localhost/JsTestDriver.jar
localhost/js/App.js
localhost/js/App.test.js
localhost/fixtures/index.html
我的conf文件说:
server: http://localhost:4224
serve:
- fixtures/*.html
load:
- http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js
- jasmine/lib/jasmine-1.1.0/jasmine.js
- jasmine/jasmine-jquery-1.3.1.js
- jasmine/jasmine-jstd.js
- js/App.js
test:
- js/App.test.js
我的测试是:
describe("App", function(){
beforeEach(function(){
jasmine.getFixtures().fixturesPath = 'fixtures';
loadFixtures('index.html'); **//THIS LINE CAUSES IT TO FAIL**
});
describe("When App is loaded", function(){
it('should have a window object', function(){
expect(window).not.toBe(null);
});
});
});
我的控制台输出是:
我看了this question,但这并没有帮助我解决这个问题。奇怪的是,当我注释掉
时loadFixtures( '的index.html');
行,测试通过。
有什么想法吗?
答案 0 :(得分:2)
好的 - 想通了。 JsTestDriver将“测试”添加到你的灯具的路径上。
此外,jasmine-jquery使用ajax获取灯具。
因此,这些步骤最终对我有用:
在jsTestDriver.conf中:
serve:
- trunk/wwwroot/fixtures/*.html
load:
- trunk/wwwroot/js/libs/jquery-1.7.1.min.js
- jstd/jasmine/standalone-1.2.0/lib/jasmine-1.2.0/jasmine.js
- jstd/jasmine-jstd-adapter/src/JasmineAdapter.js
- jstd/jasmine-jquery/lib/jasmine-jquery.js
- trunk/wwwroot/js/main.js
test:
- trunk/wwwroot/js/main.test.js
在我的测试文件中:
describe("main", function(){
beforeEach(function(){
jasmine.getFixtures().fixturesPath = '/test/trunk/wwwroot/fixtures';
jasmine.getFixtures().load('main.html');
});
describe("when main.js is loaded", function(){
it('should have a div', function(){
expect($('div').length).toBe(1);
});
});
});
请注意,beforeEach()
调用使用HTML夹具的绝对URL。
答案 1 :(得分:0)
尝试将灯具路径更改为:
jasmine.getFixtures().fixturesPath = '/fixtures';
我变得与众不同,但同样也是奇怪的错误。