Простое тестирование TypeScript с Chutzpah не работает

Я пытаюсь запустить самый простой из TypeScript тесты с использованием Jasmine а также 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 настроен на компиляцию TypeScript после сохранения, и я физически смотрю на JavaScript выход: classSimple.js в том же каталоге рядом с classSimple.ts, Тем не менее, когда я запускаю спецификацию, используя Chutzpah Я получаю следующее:

Сообщение: запуск Chutzpah запущен в режиме Выполнение с установленным параллелизмом 4 Сообщение: Создание контекста теста для C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts Сообщение: Создание контекста теста для 'C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts'Сообщение: тестовый файл c:\dev\TestProject\tests\jasmine\typescript\simplespec.ts соответствует пути тестового файла из файла настроек. Сообщение: исследование пути к эталонному файлу'../../../src/typescript/classSimple.ts'Сообщение: Добавлен файл'C:\dev\TestProject\src\typescript\classSimple.ts'к ссылочным файлам. Local: True, IncludeInTestHarness: True Сообщение: Обрабатывается ссылочный файл "C: \ dev \ TestProject \ src \ typescript \ classSimple.ts" для расширенных ссылок. Сообщение: добавлена ​​зависимость фреймворка "C:\Users\self\AppData\Local\Microsoft\". VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine_favicon.png'к ссылочным файлам Сообщение: добавлена ​​каркасная зависимость'C:\Users\self\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\boot.js'к ссылочным файлам Сообщение: добавлена ​​зависимость фреймворка'C:\Users\self\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine-html.js'к ссылочным файлам Сообщение: добавлена ​​зависимость от инфраструктуры'C:\Users\ себя \AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine.js'для ссылки файлы Сообщение: добавлена ​​каркасная зависимость 'C:\Users\ себя \AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine.css' в ссылающиеся файлы. Сообщение: добавлена ​​зависимость фреймворка 'C:\Users\ себя \AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\chutzpah_boot.js' к ссылочным файлам. Сообщение: завершен тестовый контекст сборки для C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts Ошибка: 0: время:22:47:48.6888513; Тема:23; Сообщение: не удается найти местоположение для сгенерированного пути на C: \ dev \ TestProject \ src \ typescript \ classSimple.ts Предупреждение: 0: Время:22:47:48.6978503; Тема:23; Сообщение:Chutzpah определил, что сгенерированные файлы.js отсутствуют, но режим компиляции - External, поэтому Chutzpah не может их скомпилировать. Результаты теста могут быть неверными. Информация: 0: Время:22:47:48.7038522; Тема:23; Сообщение: Найден сгенерированный путь для C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts в c:\dev\TestProject\tests\jasmine\typescript\simpleSpec.js Ошибка: 0: Время:22:47:48.7088508; Тема:23; Сообщение: не удалось найти сгенерированный путь для C: \ dev \ TestProject \ src \ typescript \ classSimple.ts в

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

Это так же просто, как и для модульного тестирования. Я знаю, что тесты работают независимо от .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 в корне вашего проекта.

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

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

Некоторые новые тесты в моем проекте Chutzpah написаны на TypeScript и скомпилированы в единый 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... Я думаю.

Другие вопросы по тегам