Je suis moqueur quelques points finaux sur un site angulaire avec l'aide du modèle Protractor suivant:Ajouter plusieurs modules simulacres dans un essai avec « addMockModule »
// mock.js
// adding the mock module and passing it data
Mock.prototype.all = {
default: function() {
browser.addMockModule('httpBackendMock', mockModules.all, {
data: data
})
}
}
// mockmodules.js
// add dependencies to module and inject it
exports.all = function() {
$httpBackend.whenGET(/user/).respond(function() {
return [200, data.mockData.data];
});
$httpBackend.whenGET(/.*/).passThrough();
$httpBackend.whenPOST(/.*/).passThrough();
angular.module('httpBackendMock' ['ngMockE2E', 'sportsbook-app'])
.value('data', {
'mockData': arguments[0],
'count': 0
})
.run(runBlock);
runBlock.$inject = ['$httpBackend', 'data', 'eventDataSourceManager'];
}
// test-spec.js
// call mock from test
it("Mock", function() {
mock.all.default();
});
Maintenant, cela fonctionne très bien, mais je veux être capable d'ajouter plus de modules en ayant plusieurs modules qui envoient tous des données différentes. Exemple:
Mock.prototype.all = {
default: function() {
browser.addMockModule('httpBackendMock', mockModules.allDefault, {
data: data
})
},
user: function() {
browser.addMockModule('user', mockModules.allUser, {
userData: userData
})
}
}
it("Mock", function() {
mock.all.default();
mock.all.user();
});
Ainsi, aucun des motifs ne semble fonctionner.
également au sein du serveur de sélénium, je peux voir que les noms des deux modules sont trouvés:
Executing: [execute script: angular.resumeBootstrap(arguments[0]);, [[protractorBaseModule_, httpBackendMock, user]]])
Au début, je pensais que la question était avec
$httpBackend.whenGET(/.*/).passThrough();
$httpBackend.whenPOST(/.*/).passThrough();
essayé d'ajouter à un module séparé et appelez-le après que tous les autres modules sont appelés, mais cela n'a pas fonctionné. Des idées?
Je suis désolé pour la confusion. Les objets de page allDefault et allUser ont en effet un identifiant de nom de module unique, par exemple: angular.module ('allU') et angular.module ('allD'). Edité la question principale pour refléter cela. Je n'arrive toujours pas à comprendre quel pourrait être le problème ... Je me trompais aussi sur le fait que seul le dernier simulacre fonctionnait, en réalité ils ne fonctionnent pas tous les deux (le dernier fonctionnait quand j'ai testé avec les mêmes noms de module) – zalow517