2013-03-24 4 views
1

у меня есть какая-либо отдельные демки страницы, как эта здесь: http://notjs.org/examples/forms/formmode_demo.htmljsdom и сценарий теги с относительными путями

Я думал, ничего себе, это было бы супер удивительным, если бы написать несколько тестов в моей существующей установке мокко Chai вредности для тестирования примеры непосредственно, как так:

 example = 'forms/formmode_demo.html' 

     describe "examples/#{example}",() -> 
      before (done) -> 
      loadExample example,() => done() 

      it 'should load in full input mode',() -> 
      window.$('input').length.should.equal 2 

      describe "in full input mode",() -> 
      it 'should have visible save',() -> 
       window.$('button.success').is(':visible').should.be.true 
      it 'should have visible cancel',() -> 
       window.$('button.cancel').is(':visible').should.be.true 
      it 'should not have put inputs on readonly class elements',()-> 
       window.$('.readonly input').length.should.equal 0 
      it 'should have input with author name',() -> 
       window.$("[data-not_attr='name'] input:text").val().should.equal window.dataObject.name 

Если бы я мог сделать это, то я бы никогда не страдать, что неудобно, «ваш примером й рабочие остановился месяцев назад» момент.

Я получил его для работы, но только с тегами скриптов на странице src'd из http: // urls. Это не так эффективно, если я должен развернуть пакет на сервере перед тестированием.

На странице примера загружаются jquery, underscore и notjs и должны быть выполнены в виде отдельной демонстрации. Он также должен быть способен работать и может с относительными URL-адресами из локальной файловой системы. Первоначально у меня был тег сценария notjs на странице, указывающий на относительный путь, например.

<script src="../../notjs.basics.js"></script> 

вместо

<script src="http://notjs.org/notjs.basics.js"></script> 

Но notjs.basics.js никогда не загружен (window.Notjs == определено в тесте), и я не вижу никакой ошибки от jsdom. Я попытался установить параметр documentRoot jsdom, но это, похоже, не сработало.

Для справки, метод loadExample и остальной части моей установки jsdom здесь: https://github.com/bee-hub/notjs/blob/master/test/testHelper.coffee

Спасибо за любую помощь и предложения.

ответ

1

Это не документировано нигде, что я вижу, но функция testLocal() в test/jsdom/index.js в версии 0.8.4 jsdom предоставляет опцию «url» для jsdom.jsdom (...), которая похоже, выполняет ту же самую цель, которую вы ожидаете от опции documentRoot. Используя его, я могу разрешить относительные пути источника исходного кода из документа HTML в локальной файловой системе.

Для чего это необходимо, «documentRoot» также не упоминается в документации. Его использование - anecdotally endorsed in a github issue, поэтому, возможно, оно работало в более ранней версии.

Не забывайте, что jsdom.jsdom (...) будет загружать скрипты асинхронно, поэтому не забудьте проверить тесты на событие, готовое к документу.

Удачи вам!