Bu soru, diğer sorum (addMockModule
ileticiden kullanmayı önerdikleri) için olası bir çözümdür: Call other api when running tests using Protractor.
Aşağıdaki dosyam var: mockedRest.js
Bu, yansıtıcıya eklemek istediğim modüldür. Herhangi bir REST çağrılarını kesmeli ve adresi değiştirmelidir (api/apiMock /).
exports.apiMockModule = function() {
console.log('apiMockModule executing');
var serviceId = 'mockedApiInterceptor';
angular.module('apiMockModule', ['myApp'])
.config(['$httpProvider', configApiMock])
.factory(serviceId,
[mockedApiInterceptor]);
function mockedApiInterceptor() {
return {
request: function (config) {
console.log('apiMockModule intercepted');
if ((config.url.indexOf('api')) > -1) {
config.url.replace('api/', 'apiMock/');
}
return config;
},
response: function (response) {
return response
}
};
}
function configApiMock($httpProvider) {
$httpProvider.interceptors.push('mockedApiInterceptor');
}
};
Daha sonra, modülü yüklediğim gerçek sınamam var.
describe('E2E addMockModule', function() {
beforeEach(function() {
var mockModule = require('./mockedRest');
browser.addMockModule('apiMockModule', mockModule.apiMockModule);
console.log('apiMockModule loaded');
browser.get('#page');
});
it('tests the new apiMock', function() {
// test that clicks a button that performs a rest api call. left out as I can see the call in fiddler.
});
});
Ancak DİNLENME çağrı hala 'API /' yerine 'apiMock /' Ben onun işi yapmak için önleme almak için daha fazla şey yapmak zorunda olmadığını bilmiyorum işaret ediyor. Ayrıca, apiMockModule içinde modülün yüklenmemesi gibi konsolda oturum açmış bir şey olmadığını da not etmeye değer.
Herhangi bir tavsiye
takdir edilmektedir.
sayesinde ama hala çalışmıyor. Bunu hata ayıklamanın başka bir yolu var mı? Config.url = 'bir şey' ayarlasam bile bu değeri kullanmıyor – emp
Şaşırdım çünkü bu kodu test ettim. – gontard
Cevabımı tamamladım. – gontard