grunt неправильно запускает тесты Qunit

Ситуация: в настоящее время я использую QUnit для тестирования проекта в TypeScript/Javascript, и все работает нормально, когда я запускаю их в браузере.

Проблема: я пытаюсь использовать grunt для запуска тестов QUnit в автономном режиме (мне это нужно для непрерывного интеграционного тестирования), и тесты не работают должным образом.

Конфигурация Вот как я сейчас настроил:

Gruntfile.js
package.json
src/
  - Ts source files
test/
  - config.js
  - Test.ts
  - Test.js
  - test.html

Gruntfile.js

/*global module:false*/
module.exports = function(grunt) {

    grunt.initConfig({
        connect: {
            server: {
                options: {
                    port: 8000,
                    base: '.'
                }
            }
        },

        qunit: {
            all: {
                options: {
                    urls: [
                        'http://localhost:8000/test/test.html'
                    ]
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-qunit');
    grunt.loadNpmTasks('grunt-contrib-connect');

    grunt.registerTask('test', ['connect', 'qunit']);

};

package.json

{
  // Name, version, description, repo and author fields...
  "engines": {
    "node": ">= 0.10.0"
  },
  "devDependencies": {
    "grunt": "~0.4.5",
    "grunt-contrib-watch": "~0.6.1",
    "grunt-contrib-connect": "~0.9.0",
    "grunt-contrib-qunit": "~0.5.2"
  }
}

И затем у меня есть файл .travis.yml для запуска всего этого. Я не знаю, действительно ли это важно, потому что тесты не запускаются ни в travis, ни в моей локальной среде, но в любом случае вот это:

language: node_js
node_js:
 - "0.11"
 - "0.10"
before_install:
 - "npm install grunt --save-dev"
 - "npm install -g grunt-cli"
install:
 - "npm install"
 - "npm install -g typescript"
script:
 - "tsc --module amd --target ES5 ./src/*.ts"
 - "grunt test --verbose --force"

А вот часть ошибок в сборке travis: http://puu.sh/eKpWj/35614680e1.png< /а>

(В настоящее время у меня есть около 20 утверждений, которые проходят, когда я запускаю их в браузере. Кроме того, компиляция машинописного текста работает нормально.)

Изменить: и, как кто-то спросил, вот содержимое файла Test.html: http://pastebin.com/LN3igmjc< /а>

Редактировать 2: вот также содержимое config.js:

var require = {
    baseUrl: "../src/"
};

person Kewin Dousse    schedule 19.01.2015    source источник
comment
Похоже, вы используете requirejs, это правильно?   -  person Jordan Kasper    schedule 19.01.2015
comment
В любом случае, можете ли вы показать нам свой HTML-файл qunit?   -  person Jordan Kasper    schedule 19.01.2015
comment
Да, я использую requirejs.   -  person Kewin Dousse    schedule 19.01.2015
comment
Хм, require использует Ajax для получения зависимостей, и если вы не используете веб-сервер, эти вызовы могут завершиться ошибкой. Пробовали ли вы настроить простой сервер подключения и использовать localhost?   -  person Jordan Kasper    schedule 19.01.2015
comment
Не пробовал, по возможности сделаю. Однако не странно ли, что он нормально работает в браузере? Также вы просили содержимое файла HTML, вот оно -› pastebin.com/LN3igmjc   -  person Kewin Dousse    schedule 19.01.2015
comment
Некоторые браузеры поддерживают Ajax-вызовы не с полным HTTP-запросом, а некоторые — нет. Фантом такой странный.   -  person Jordan Kasper    schedule 19.01.2015
comment
Можете ли вы также показать содержимое этого файла config.js?   -  person Jordan Kasper    schedule 19.01.2015
comment
Я отредактировал вопрос с содержанием config.js   -  person Kewin Dousse    schedule 19.01.2015
comment
@jakerella Спасибо за ваше предложение, я сделал, как вы сказали, и запустил сервер подключения, используя предоставленную вами ссылку. Я также отредактировал свой вопрос, который теперь отражает все результаты, которые я получаю, пытаясь выполнить тесты через localhost (посмотрите на вывод travis): похоже, что где-то все еще что-то не так...   -  person Kewin Dousse    schedule 19.01.2015


Ответы (1)


На самом деле мне удалось заставить его работать. Я изменил две вещи:

  1. Я не компилировал тесты, так как tsc --module amd --target ES5 ./src/*.ts компилировал файлы в папке src, а тестовые файлы были в папке test. Я корю себя за это... Поэтому я просто добавил tsc --module amd --target ES5 ./test/*.ts в файл .travis.yml
  2. Самая большая проблема заключалась в том, что тесты QUnit пытались стартовать до работы require.js. Решение, которое я использовал, состояло в том, чтобы сказать QUnit не запускать тесты автоматически, используя QUnit.config.autostart = false;, и заставить их запускаться, когда я хочу, с помощью QUnit.start();. Я поместил этот start() в конец моего файла Test.js, чтобы тесты запускались только после завершения загрузки QUnit.
person Kewin Dousse    schedule 21.01.2015