Я опытный разработчик, но довольно плохо знаком с Javascript. Моя команда работает с решением Platfom-as-a-service, в котором для определения сущностей на платформе используется язык, специфичный для домена. Типы платформы определены в файле типов, а фактический код находится в отдельном файле Javascript (аналогично разделению объявления / реализации, которое вы можете увидеть, например, в .h/.cpp
файлах на C ++).
В результате мы имеем несколько функций Javascript в файле, которые не заключены в область видимости объекта. Нам нужно начать модульное тестирование, а Jasmine - наша среда тестирования. У меня есть две основные цели для юнит-тестирования:
Включить быструю петлю обратной связи при локальном развитии. У меня есть карма, карма-жасмин и карма-покрытие, работающие на милой маленькой локальной установке, которая выполняет это сейчас, и позволит другим вещам DevOps работать дальше.
Включить отладку тестов в VS Code. Вот где я зацикливаюсь. В идеале, я хотел бы, чтобы разработчики могли проходить через модульные тесты код, который он тестирует. Это действительно помогло бы нам проверить часть нашего старого кода.
Проблема (для меня), кажется, заключается в том, чтобы привести функции Javascript в закрытые рамки при отсутствии кармы или веб-страницы. Карма вводит функции в действие и правильно запускает тесты. Я также могу заставить тесты выполняться с использованием автономного Jasmine и страницы HTML (SpecRunner.html
), но, опять же, есть веб-страница, переносящая их в область видимости (объект window
, я бы предположил). Когда я пытаюсь запустить эти тесты в VS Code с использованием конфигурации Jasmine Test Explorer и jasmine.json, я вижу тесты, но тесты не могут найти функции, и я получаю ReferenceError. Изменение порядка не изменило этот результат.
Я немного посмотрел на отладку с помощью кармы-бегуна , но мне не очень повезло, что это сработало. Иногда точки останова не срабатывали, иногда я не мог заставить его наступить ... это было довольно странно. Я восприимчив к такому подходу, если я просто что-то упустил в своей настройке, чтобы это работало хорошо.
Файл гипотетического кода *
//There are multiple functions in this file.
//These are all standalone functions ...not Node-based, and no enclosing object
function codeBehindJavasciptFunction(arg1){
//code I would like to unit test
}
//Another function
function aDifferentCodeBehindFunction(argX, argY){
//other functionality
}
Гипотетический файл теста Жасмин
describe("Unit tests for the type", function() {
describe("Test codeBehindJavascriptFunction", function() {
it("Tests and assertions", function() {
//...
});
});
describe("Test aDifferentCodeBehindFunction", function() {
it("Tests and assertions", function() {
//...
});
});
});
Я хотел бы, чтобы разработчик запустил тесты Jasmine в VS Code и пошагово прошел по коду. Я думал, что функциональность отладки плагина обеспечит это, но я не могу получить код для загрузки с конфигурацией в jasmine.json. Код VS с плагином может видеть тесты, но они не выполняются при выполнении, потому что код не найден.