Potrzebuję wskazówek, jak skonfigurować testowanie jednostkowe projektu TypeScript za pomocą Jasmine.Jak ustawić jaśmin dla projektu maszynopisu
Spec plik testowy wygląda następująco:
/// <reference path="../../../typings/tsd.d.ts" />
import {Mediator} from '../../../services/remoting/Mediator';
describe('Mediator',() =>
{
let mediator: Mediator;
beforeEach(() =>
{
mediator = new Mediator();
});
it('blah blah',() =>
{
expect(mediator.TEST).toBeDefined();
});
});
używam moduł jaśmin npm do uruchamiania testów. jasmine.json jest skierowany do budowanych plików spec JS tak:
{
"spec_dir": "build/spec",
"spec_files": [
"**/*.js"
]
}
plik build specyfikacja wygląda następująco:
/// <reference path="../../../typings/tsd.d.ts" />
define(["require", "exports", '../../../services/remoting/Mediator'], function (require, exports, Mediator_1) {
describe('factory: Mediator', function() {
var mediator;
beforeEach(function() {
mediator = new Mediator_1.Mediator();
});
it('should have defined all required fields', function() {
expect(mediator.ExecuteQuery).toBeDefined();
});
});
});
//# sourceMappingURL=Mediator.spec.js.map
gdy próbuję uruchomić testy jaśmin narzeka na nieokreśloną funkcję „określenie” :
ReferenceError: define is not defined
próbowałem szukać na maszynopis + Jasmine ale nie ma wiele informacji (i nie chcę, aby w pełni korzystać z VisualStudio). Byłbym wdzięczny, gdyby ktoś wskazał mi właściwy kierunek ustawiania maszynopisu + jaśminu i gdzie jest mój błąd.
Z góry dziękuję.
Dzięki za szybką odpowiedź. Działa z twoją sugestią. Mój projekt to aplikacja SPA, która będzie uruchamiana w przeglądarce. Rozwijam go w VSCode + node.js, aby uruchomić pakiety npm i takie. O ile rozumiem, amd jest bardziej odpowiedni dla aplikacji przeglądarkowych, ale rozwijam się przy użyciu narzędzi node.js -> to z kolei wymaga common.js. Co powinno być używane? – Amid
Interesująca zagadka :) Będziesz chciał skompilować z '--module amd' do użycia w przeglądarce, jeśli używasz RequireJS (ale nadal używasz' --module commonjs' dla twojego lokalnego rozwoju). Oba systemy mają różne wzory modułów. – Fenton
Chodzi o to, że nie używam RequireJS. Do tej pory używam tylko zwykłego TypeScript. A potem chciałem dodać kilka testów jednostkowych, gdy pojawi się błąd. Jeśli rozumiem poprawnie podczas kompilowania przy użyciu flagi -commonjs, używane funkcje (takie jak "wymagają") są już częścią node.js. I dlatego nie występuje błąd. Gdy kompiluję z flagą -amd, funkcje takie jak "define" są domyślnie dostarczane pod maską przez przeglądarkę, ale nie przez node.js. Czy tak jest? – Amid