Jul 122014
 

Der Quellcode des Angular-Moduls ngMock hat mir gerade verraten, wie man optimal einen zu testenden Service / Controller injected. Mit diesem Vorgehen ist der Service / Controller in beforeEach, afterEach und jedem Test (it-Block) einer Suite (describe-Block) als Closure-Variable verfügbar:

describe("Checklists", function () {

var service;

function doSomething() {
// ...
service.doAnything();
// ...
}

beforeEach(function() {
module("checklists");
inject(function(Checklists) {
service = Checklists;
doSomething();
});
});

it("can do", function () {
// ...
service.doAnything();
// ...
});
});

Die Registrierung des zu testenden Angular-Moduls muss innerhalb eines Testfalls mit “module(“<name>”)” passieren, da die Liste der Module in ngMock für jeden Testfall zurückgesetzt wird. Mittels “inject” innerhalb eines laufenden Testfalls erfolgt der Aufruf der übergebenen Funktion und übergeben der zu injiziierenden Argumente. Ein “beforeEach(inject(function(Checklist) { … }));” ist nicht möglich.

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>