J'utilise Mocha, Chai et Sinon pour tester mon code Angular.Test pour s'assurer qu'une fonction dans une promesse dans une fonction est appelée?
J'ai un code dans une fonction appelée mise à jour je dois tester
function update()
//... Irrelevant code to the question asked
DataService.getEventsData(query).then(function (res) {
var x = res.results;
addTabletoScope(x); // Want to check that this is called.
vm.tableState.pagination.numberOfPages = Math.ceil(res.resultsFound/vm.tableState.pagination.number);
vm.isLoading = false;
vm.count++;
});
Tout ce code est dans la fonction de mise à jour. Tout cela est dans un contrôleur que je suis en train de tester.
Lorsque j'appelle scope.update() dans mon test, je veux m'assurer que le scope.addTabletoScope (x) est appelé.
dans un beforeeach avant d'exécuter les essais, j'ai un espion
spy = sinon.spy(scope, 'addTabletoScope');
Parce que cette fonction est liée à la portée.
Voici un test que j'ai exécuté.
it('Expects adding to scope to be called', function(){
$httpBackend.whenPOST(APP_SETTINGS.GODZILLA_EVENTS_URL)
.respond(res.data);
scope.tableState = tableState;
scope.update();
$httpBackend.flush();
expect(spy.called).to.be.true;
})
Échec car spy.called est faux.
Une autre chose que j'ai essayé était
it('Expects adding to scope to be called', function(){
$httpBackend.whenPOST(APP_SETTINGS.GODZILLA_EVENTS_URL)
.respond(res.data);
scope.tableState = tableState;
scope.update();
scope.$apply();
$httpBackend.flush();
expect(spy.called).to.be.true;
})
Ce qui ne fonctionne pas non plus. Où vais-je me tromper avec ça?