2013-08-23 2 views
5

Я довольно новичок в TypeScript и пытаюсь установить некоторые модульные тесты для моей базы кода типа TypeScript. Проблема в том, что мой код зависит от работы другого, и все эти ссылки выполняются в виде жестко закодированных относительных путей, таких как «...... \ somefile.d.ts». Когда я пришел к модульному тесту, я хочу подделать некоторые из зависимостей, но не знаю, как заставить TypeScript использовать мои подделки вместо жестко закодированных ссылочных файлов.Лучшая ссылка на файл для typescript

Мой вопрос: есть ли способ не жестко кодировать ссылочный путь в исходном коде? Есть ли такие вещи, как препроцессор или макрос в TypeScript, или я могу использовать систему проекта, чтобы помочь разрешить зависимость, а не жестко кодировать их в исходном коде?

ответ

4

Заканчивать генерации опорного файла хрюкать-TS: https://github.com/basarat/grunt-ts#reference-file-generation

Что вы можете сделать, это то, что имеют отдельные цели, один для разработчика и один для теста:

dev: {       
     src: ["app/**/*.ts", "!app/**/*.spec.ts"], // Exclude your spec files 
     reference: "./app/reference.ts", 
     out: 'app/out.js',   
    }, 
    test: {       
     src: ["app/**/*.ts"], // Include all files 
     reference: "./app/reference.ts", 
     out: 'app/out.js',   
    }, 

Теперь вы ссылаться только app/reference.ts от всех ваши файлы. Когда вы хотите запускать тесты, выполните сборку тестов, когда вы хотите выпустить/dev для dev.

Также проверить это видео-учебник: http://www.youtube.com/watch?v=0-6vT7xgE4Y&hd=1

+0

Node.js не существует в нашей рабочей среде. Я думал о том, чтобы вручную генерировать файл reference.ts со всеми зависимостями и, в свою очередь, ссылаться на этот файл во всем моем исходном коде. Но все же есть некоторые общие файлы, которые не под моим контролем, и я не могу использовать этот подход для их исправления. –

3

Вместо того чтобы загружать различные файлы Вы рассмотрели с помощью теста или рамки шпионской обменивать реализацию для реализации теста?

В наших проектах TypeScript мы использовали шпионов жасмина (https://github.com/pivotal/jasmine/wiki/Spies, http://tobyho.com/2011/12/15/jasmine-spy-cheatsheet/) для подделки зависимостей. Мы загрузили основной исходный код как обычно, а затем использовали функции createSpyObj и spyOn для замены зависимостей новым TypeScript, определенным в наших тестовых файлах.

Используя этот подход, вам не нужно вносить какие-либо изменения в основной исходный код или включать пути - все делается в тестовых файлах.

Смежные вопросы