Basierend auf früheren Antworten, habe ich die folgende Einstellung für Winkel-cli. Ich brauche auch ein externes Modul in meinem Matcher (in diesem Fall moment.js)
Hinweis In diesem Beispiel habe ich eine equalityTester hinzugefügt, aber es sollte
Erstellen Sie eine Datei mit src/spec_helper.ts
die mit einem Kunden Matcher arbeiten folgender Inhalt:
// Import module
import { Moment } from 'moment';
export function initSpecHelper() {
beforeEach(() => {
// Add your matcher
jasmine.addCustomEqualityTester((a: Moment, b: Moment) => {
if (typeof a.isSame === 'function') {
return a.isSame(b);
}
});
});
}
Dann in src/test.ts
importiert die initSpecHelper()
Funktion es hinzufügen auszuführen. Ich habe es vor Angulars TestBed init platziert, was gut zu funktionieren scheint.
import { initSpecHelper } from './spec_helper';
//...
// Prevent Karma from running prematurely.
__karma__.loaded = function() {};
// Init our own spec helper
initSpecHelper();
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
//...
Ich fand auch ein schönes Beispiel hier: http://tobyho.com/2012/01/30/write-a-jasmine-matcher/ – Dancrumb
I Link von Dancrumb geteilt versucht, im Idealfall seinen ordentlichen und sauberen Ansatz aber es hat nicht funktioniert, also adoptierte ich Alex. – joy
Ist hier ein für Jasmin 2.0+ '' '' Javascript before (function() { jasmine.addMatchers ({ toEqualData: function() { return { vergleichen: function (tatsächliche, erwartete) { return { pass: angular.equals (tatsächlich, erwartet)} } } } }); }); '' '' – mikker