Я пишу набор тестов с Karma & Jasmin.
"jquery": "3.4.1","karma": "4.1.0","karma-jasmine": "2.0.1","webpack": "4.25.1",
Структура выглядит следующим образом
import $ from 'jquery';
describe('My Test Suite', () => {
beforeEach(done => {
//some injectors & instantiations code
done();
});
// A spyOn creator method which will create spy's on an API call & will return desired response.
const createSpyForRequest = (serviceFacade,dynamicResponse) => {
spyOn(serviceFacade.default, 'myAPICall').and.callFake(function (data, callback) {
const response = {
response: function () {
return {responseItems: dynamicResponse};
}
};
callback(response);
});
};
it('Test1', function (done) {
let serviceFacade = require('../../../src/js/serviceFacade');
createSpyForRequest(serviceFacade,[]);
//call a method which will call serviceFacade.myAPICall
expect(someThing).toBe(1);
});
it('Test2',function(done){
let serviceFacade = require('../../../src/js/serviceFacade');
const dynamicResponse = [{id:1}, {id:2}]
createSpyForRequest(serviceFacade,dynamicResponse);
//call a method which will call serviceFacade.myAPICall
expect(someThing).toBe(2);
});
});
Мой тест - он запускается асинхронно и происходит, когда шпион создается один раз. Поэтому, если мой Test1 запускается первым, мой ответ устанавливается на [], который затем используется и в Test2 (кажется, spyOn () для Test2 не вызывается), и наоборот. В любой момент времени один из тестов завершается неудачей.
Я также пытался уничтожить всех шпионов из Очистить шпионов , но это тоже не сработало.
I ' Я новичок в этом и не понимаю, как создавать spys и добавлять динамический c ответ для каждого теста.