Наглость и Жасмин 2.0 и RequrieJs

Я немного беспокоюсь о том, чтобы Chutzpah работал с requireJs / jasmine 2.0. Этот метод работал для версии 1.3, но теперь для jasmine версии 2.0 наглость перестала собирать тесты. Я также обновил chutzpah до 3.1.1 для поддержки jasmine 2.0. Мне пришлось внести небольшое изменение в загрузку jasmine из requireJs, чтобы заставить его работать, но я решил, что это не должно повлиять на наглость, поскольку он просто загружал html.

Вот команда, которую я выполняю из-за наглости.

chutzpah.console.exe path/to/SpecRunner.html

Консоль теперь не принимает тесты

=== 0 total, 0 failed, took 0.25 seconds ===

Но когда я запускаю настоящий html-файл, он находит тесты

Пример жасмина

Любая помощь будет принята с благодарностью


Вместо HTML-маршрута я пробовал просто наглость, встроенную в конфигурацию

{
    "Framework": "jasmine",
    "TestHarnessReferenceMode": "AMD",
    "TestHarnessLocationMode": "SettingsFileAdjacent",
    "Tests": [
        {"Path" : "Specs/example.spec.js"}, 
    ],
    "References" : [
        {"Path" : "../../../Scripts/lib/require/require.js" }, 
        {"Path" : "../../../Scripts/app/app.js" }
    ]
}

Это работает, но я получаю сообщение об ошибке

Error: Error: Script error for: specs/example.spec

Error: Timeout occured when executing test file
While Running:C:\path\to\specs\example.spec.js

System.AggregateException: One or more errors occurred. 
---> System.NullReferenceException: Object reference not set to an instance of an object.

at Chutzpah.FileProbe.<FindScriptFiles>d__1a.MoveNext() in c:\Dev\chutzpah\Chutzpah\FileProbe.cs:line 159

Путь здесь определенно правильный, так как я скопировал и вставил его в окно проводника, чтобы убедиться.

Тест представляет собой простой скомпилированный файл coffeescript, который выглядит так

(function() {

  define([], function() {
    return describe('==== example test ====', function() {
      return describe('the test should', function() {
        return it('showcase toBe', function() {
          return expect(true).toBe(true);
        });
      });
    });
  });

}).call(this);

И я уверен, что это работает, поскольку он передается в моем эквиваленте на основе HTML в браузере.


Это была моя последняя конфигурация, которая работает с html. Я не мог заставить его работать только с конфигом, обнаруживающим тесты. Надеюсь, это будет решено, когда вопрос 214 будет решен, как в ответе ниже.

{
    "Framework": "jasmine",
    "RootReferencePathMode": "SettingsFileDirectory",
    "TestHarnessReferenceMode": "AMD",
    "TestHarnessLocationMode": "SettingsFileAdjacent",
    "Tests": [
        { "Path" : "specrunner.html" }
    ],
    "References" : [
        {"Path" : "../../../Scripts/lib/require/require.js" }, 
        {"Path" : "../../../Scripts/app/app.js" }
    ]
}

person Neil    schedule 28.02.2014    source источник
comment
Для меня лучший способ помочь - это прикрепить почтовый индекс, содержащий то, что вы пытаетесь, но не работает. Я хотел бы увидеть как файл .html, который не запускается, так и код, который вы сделали, чтобы попытаться заставить его работать только с конфигурацией Chutzpah. Прикрепите этот zip-архив к рабочему элементу, который вы создали здесь: chutzpah.codeplex.com/workitem/215   -  person Matthew Manela    schedule 28.02.2014
comment
Спасибо, я постараюсь собрать урезанный пример в начале следующей недели, так как все это глубоко вложено в мой текущий проект.   -  person Neil    schedule 01.03.2014
comment
Я понимаю. Я ценю приложенные усилия, поскольку это лучший способ для меня отладить и диагностировать вашу проблему.   -  person Matthew Manela    schedule 01.03.2014


Ответы (1)


Я просмотрел ваш код и вот что нашел

Запуск HTML

Это нормально работает, если вы сделаете пару небольших изменений. 1. В настройках ваших тестов в файле chutzpah.json есть конечная запятая. Это обнаруживает ошибку, при которой десериализатор возвращает это как нулевую запись, а наглость не обрабатывает ее. Я исправлю эту проблему, но вы можете просто удалить лишнюю запятую. 2. Как только я удалил эту команду, я увидел, что в вашем файле chutzpah.json есть настройки тестов, в которых перечисляется только файл .js. Но при запуске файла html это ваш тестовый файл. Итак, ваш chutzpah.json отфильтровывает его. Если вы обновите настройку тестов, чтобы указать на файл html, это сработает.

Как только я внес эти изменения, тест прошел успешно.

Запуск Chutzpah.json

Рассматривая этот способ загрузки example.spec в SpecRunner, вы ссылаетесь на расширение .js в своем вызове require. Это говорит require.js игнорировать baseurl и просматривать файл относительно текущего местоположения. Когда у вас наглость генерирует тестовую привязку, она генерирует требуемый вызов без расширения. Это означает, что файл должен быть загружен с учетом текущего параметра baseurl.

Теперь в наглости есть ошибка, из-за которой он не понимает baseurls. См. https://chutzpah.codeplex.com/workitem/214. Планируемое решение - позволить вам указать chutzpah в файле chutzpah.json, какой у вас baseurl. Без этого все еще можно заставить это работать, но вам нужно будет сказать chutzpah, чтобы он поместил свой сгенерированный файл .html туда, где будет указывать ваш baseurl.

Сообщите мне, если это поможет.

person Matthew Manela    schedule 02.03.2014
comment
Это действительно здорово, спасибо за помощь, особенно на выходных. Теперь у меня он работает с использованием html, как напрямую вызывая файл html, так и с использованием средств тестирования в config. Я попробовал просто пойти по маршруту чистой конфигурации и использовать Custom и путь. Он запускается, находит файлы спецификаций, но говорит, что тестов нет. Странный! - person Neil; 03.03.2014
comment
Я отлаживал его, и вы обнаружили ошибку! Поздравляю. Chutzpah неправильно генерирует путь, когда жгут находится в другом каталоге при использовании AMD. Я исправлю это в рамках рабочего пункта 214. - person Matthew Manela; 04.03.2014