Как загрузить публичную функцию с помощью QUnit и TypeScript

Я использую QUnit для тестирования моего машинописного кода, и все в порядке, когда я запускаю простой пример, подобный этому: http://thomasardal.com/testing-typescript-with-typescript-using-qunit-and-chutzpah/

Но мой кошмар начинается, когда я пытаюсь создать модульные тесты для своего приложения SPA. На данный момент, чтобы запустить тестирование с использованием наглости на моем VS, я получил странную ошибку: «Не удается найти переменную home в mypath\home.tests.ts (line6).

Мой код ниже:

home.ts

import logger = module('services/logger');
export var title = 'Home View';

export function activate() {
    logger.log('Home View Activated', null, 'home', true);
    return true;
}

home.tests.ts

/// <reference path="../../Scripts/qunit.d.ts" />
QUnit.module("home.ts tests");
import home = module("home");

test("test title from home viewmodel", function () {

    // Calling to active public function from home viewmodel. (home.ts)   
    var activateResult:string = home.title;

    // Assert
    equal(activateResult, "Home View", "Result should be Home View ");

});

вот мои настройки typeScript: setting for typescript

есть идеи, что не так с моим кодом?

ОБНОВЛЕНИЕ 1 Полное сообщение окон вывода в Vs2012:

Тест «home.ts тесты: тестовая активация функции из домашней модели просмотра» не выполнен /QUnit/qunit.js:412 в файле:///D:/Mercatus/SourceCode/KILN/AquaVet2/SW/AquaVet.Web/App/viewmodels/_Chutzpah.7.home.tests.js:6: Не удается найти переменную: home в D:\Mercatus\SourceCode\KILN\AquaVet2\SW\AquaVet.Web\App\viewmodels\home.tests.ts (строка 6)

0 сдал, 1 не прошел, 1 всего (наглость).

ОБНОВЛЕНИЕ 2 Как вы видите в коде, я пытаюсь загрузить home.ts, используя ключевое слово module("home").... Я не уверен, что это может быть причиной моих проблем. Лучшим решением может быть добавление внутренней ссылки на home.ts.

Добавление home.ts в качестве внутренней ссылки

но я не знаю, как я могу ссылаться на активацию функции !!.


person Rolando    schedule 09.05.2013    source источник
comment
Ваша консоль js показывает 404s?   -  person basarat    schedule 09.05.2013
comment
Я использую наглость для запуска своих тестов на Vs2012. результат моих тестов доступен в окне вывода (см. журнал в моем обновлении вопроса)   -  person Rolando    schedule 09.05.2013
comment
Простое добавление оператора import не включает модуль AMD — для этого вам нужен загрузчик, такой как require.js. Я не уверен, как работает QUnit, но способен ли он загружать модуль home? Без этого вы получите именно ту ошибку, которую описываете. Обратите внимание, что в статье, на которую вы ссылаетесь, вместо этого используются ссылки типа ///<reference path="generator.ts"/>.   -  person Jude Fisher    schedule 09.05.2013
comment
причина того, что я использовал импорт, заключается в том, что home.ts не был создан с использованием класса, чтобы использовать что-то вроде: var myHome= new Home(); есть ли способ использовать эту общедоступную функцию активации, используя ///‹reference path=home.ts/› ??   -  person Rolando    schedule 09.05.2013
comment
Вся работа, которую я проделал, была связана с форматом AMD/require.js, поэтому я не уверен, но я думаю, что вам нужно будет изменить переключатель компилятора AMD в настройках TS и возможно потерять ключевое слово экспорта (не уверен в последнем - я действительно не знаю, как работают модули, отличные от AMD).   -  person Jude Fisher    schedule 09.05.2013
comment
Спасибо за ваш отзыв ;)   -  person Rolando    schedule 09.05.2013
comment
@JcFx Простое добавление оператора импорта не включает модуль AMD - для этого вам нужен загрузчик, такой как require.js. является ответом. Разместите это как таковое, и я проголосую за него :)   -  person basarat    schedule 10.05.2013
comment
@BASarat, как мне добавить require.js в мои тесты? импорт требует = модуль (требуется); ? как?   -  person Rolando    schedule 10.05.2013
comment
@Rolando, вам придется создать свой собственный загрузчик: youtube.com/watch?v=4AGQpv0MKsA В качестве альтернативы вы можете использовать что-то вроде gruntjs: jaketrent.com/post/run-requirejs -with-gruntjs Извините за не слишком подробную информацию. Это будет зависеть от ваших требований   -  person basarat    schedule 10.05.2013
comment
Я создаю свой собственный загрузчик, чтобы моя html-страница вызывала мой загрузчик... но у меня есть один вопрос... как я могу вызвать свои тесты машинописного текста из моего бустера. Есть идеи?   -  person Rolando    schedule 10.05.2013


Ответы (1)


Простое добавление оператора импорта не включает модуль AMD — для этого вам понадобится загрузчик, такой как require.js.

Немного поиска в Google выдает это https://github.com/jrburke/requirejs/wiki/Test-frameworks, которые могут помочь вам заставить QUnit работать с асинхронными модулями.

И это обсуждение использования наглости с Require, которое ссылается на этот пример.

person Jude Fisher    schedule 10.05.2013