2016-05-15 4 views
1

Я пытаюсь выполнить самые простые тесты TypeScript с использованием Jasmine и Chutzpah, и я просто не могу заставить его работать. Вот исходный файл:Простой тест типаScript с Chutzpah не работает

class Simple { 
    public easyTest() { 
     return 5; 
    } 
} 

Вот спецификация:

/// <reference path="../../../scripts/typings/jasmine/jasmine.d.ts" /> 
/// <reference path="../../../src/typescript/classSimple.ts" /> 
describe("Simple Calculations",() => { 
    it("should return true",() => { 
     var simpl = new Simple(); 
     expect(simpl.easyTest()).toBe(5); 
    }); 
}); 

Вот мой chutzpah.json файл:

{ 
    "RootReferencePathMode": "SettingsFileDirectory", 
    "Framework": "jasmine", 
    "Compile": { 
     "Mode": "External", 
     "Extensions": [ ".ts" ], 
     "ExtensionsWithNoOutput": [ ".d.ts" ] 
    }, 
    "References": [   
     { "Path": "../../../src/typescript/classSimple.ts" }   
    ], 
    "Tests": [ 
     { "Path": "simpleSpec.ts" } 
    ], 
    "EnableTracing": true 
} 

Вот структура папок

TestProject.sln 
-src 
--typescript 
---classSimple.ts 
-tests 
--jasmine 
---typescript 
----chutzpah.json 
----simpleSpec.ts 

Этот VS.NET p roject установлен для компиляции TypeScript после сохранения, и я физически смотрю на преобразованный вывод JavaScript: classSimple.js в том же каталоге рядом с classSimple.ts. Тем не менее, когда я запускаю спецификации с использованием Chutzpah я получаю следующее:

Message:Chutzpah run started in mode Execution with parallelism set to 4 Message:Building test context for C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts Message:Building test context for 'C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts' Message:Test file c:\dev\TestProject\tests\jasmine\typescript\simplespec.ts matched test file path from settings file Message:Investigating reference file path '../../../src/typescript/classSimple.ts' Message:Added file 'C:\dev\TestProject\src\typescript\classSimple.ts' to referenced files. Local: True, IncludeInTestHarness: True Message:Processing referenced file 'C:\dev\TestProject\src\typescript\classSimple.ts' for expanded references Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine_favicon.png' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\boot.js' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine-html.js' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine.js' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine.css' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\chutzpah_boot.js' to referenced files Message:Finished building test context for C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts Error: 0 : Time:22:47:48.6888513; Thread:23; Message:Can't find location for generated path on C:\dev\TestProject\src\typescript\classSimple.ts Warning: 0 : Time:22:47:48.6978503; Thread:23; Message:Chutzpah determined generated .js files are missing but the compile mode is External so Chutzpah can't compile them. Test results may be wrong. Information: 0 : Time:22:47:48.7038522; Thread:23; Message:Found generated path for C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts at c:\dev\TestProject\tests\jasmine\typescript\simpleSpec.js Error: 0 : Time:22:47:48.7088508; Thread:23; Message:Couldn't find generated path for C:\dev\TestProject\src\typescript\classSimple.ts at

И вот это - это просто отсекает на конце и ничего не происходит. Дело в том, что я вижу. js файлов точно в месте указанного в указанных выше трассах, но Наглость утверждает Не удалось найти генерируемый путь для ...

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

Что я делаю неправильно?

ответ

2

Благодарим за отправку очень подробного репродукции. Вы сталкиваетесь с проблемой, которую я видел пару раз. Поскольку ваш chutzpah.json вложен в вашу тестовую папку, вам нужно указать путь к папке, который chutzpah должен использовать для определения того, как сопоставить исходный файл с папкой вывода. Для этого просто измените chutzpah.json на:

{ 
    "RootReferencePathMode": "SettingsFileDirectory", 
    "Framework": "jasmine", 
    "Compile": { 
     "Mode": "External", 
     "Extensions": [ ".ts" ], 
     "ExtensionsWithNoOutput": [ ".d.ts" ], 
     "Paths": [ 
      { "SourcePath": "../../../", "OutputPath": "../../../"} 
     ] 
    }, 
    "References": [   
     { "Path": "../../../src/typescript/classSimple.ts" }   
    ], 
    "Tests": [ 
     { "Path": "simpleSpec.ts" } 
    ], 
    "EnableTracing": true, 
    "TraceFilePath": "trace.txt" 
} 

Другой обходной путь будет просто поместить chutzpah.json в корневом каталоге вашего проекта.

Мне нужно задуматься о том, чтобы сделать Chutzpah лучше, чтобы этого избежать. Я думаю, что я посмотрю, как позволить chutzpah в этой ситуации просто предположить, что файл находится рядом, чтобы избежать этой общей ошибки.

+1

Я совершил изменение, чтобы люди в будущем не попали в эту проблему: https://github.com/mmanela/chutzpah/commit/9328f3d5f546cecc0ebf8f010b455519324c3de8 –

+0

Это сработало отлично. Благодарим вас за то, что нашли время, чтобы исследовать и довести это обновление до GitHub. Я, очевидно, не получил эту настройку. – atconway

0

Google привел меня сюда аналогичный вопрос:

Некоторые новые тесты в моем проекте наглость написаны в машинописном и сведены в единый outfile:

TSconfig.JSON

"compilerOptions": { 
    "noImplicitAny": true, 
    "target": "es5", 
    "module": "none", 
    "outFile": "./Tests/mytests-ts.js", 
    "sourceMap": true 
    } 

Наглость не смог найти *.ts файлы

Chutzpah Error: System.IO.FileNotFoundException: Couldn't find generated path for D:\Code\ChutzpahProject\Scripts\DateServiceMock.ts 

, пока я не использовал Paths вариант:

chutzpah.json

"Compile": { 
    "Extensions": [ ".ts" ], 
    "ExtensionsWithNoOutput": [ ".d.ts" ], 
    "Executable": "build-ts.cmd", 
    "Paths": [ 
     { "OutputPath": "Tests/mytests-tests-ts.js" } 
    ] 
    }, 

Это чувствует, как это мог быть комментарий к ответу @ matthew-manela ... Я думаю.

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