Куда мне поместить фикстуры HTML, когда я использую JsTestDriver?

Мне трудно заставить 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');

строка, тест проходит.

Любые идеи?


person marclar    schedule 13.01.2012    source источник


Ответы (2)


Ладно - разобрался. JsTestDriver добавляет слово «test» к пути к вашим приборам.

Кроме того, 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() использует абсолютный URL-адрес HTML-фикстуры.

person marclar    schedule 05.06.2012

Попробуйте изменить путь к прибору на:

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

В противном случае я получаю разные, но такие же странные ошибки.

person rlayte    schedule 18.01.2012
comment
Затем я получаю сообщение об ошибке: не удалось загрузить прибор: /fixtures/index.html (статус: ошибка, сообщение: не определено). Спасибо, в любом случае :) - person marclar; 19.01.2012
comment
Вы в итоге решили это? Я получаю именно эту ошибку, хотя иногда она меняется на ошибку браузерной паники. - person Dave Stein; 09.03.2012
comment
Привет, Дэйв - я добавил свой ответ выше на случай, если вы все еще ищете. - person marclar; 05.06.2012