4

我很难让 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);
        });

    });

});

我的控制台输出是:

在此处输入图像描述

链接到全尺寸图片

我看了这个问题,但它并没有帮助我弄清楚。奇怪的是,当我注释掉

loadFixtures('index.html');

行,测试通过。

有任何想法吗?

4

2 回答 2

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。

于 2012-06-05T14:43:48.180 回答
0

尝试将夹具路径更改为:

jasmine.getFixtures().fixturesPath = '/fixtures';

否则我会得到不同的但同样奇怪的错误。

于 2012-01-18T21:50:39.747 回答