O que você esperava que fosse acontecer? Espero que a contagem de sinon.fakeServer.requests seja mais de 1
O que realmente acontece sinon.fakeServer.requests é sempre nulo
Como reproduzir
describe('--Pictures Selector--', () => {
let server, store, wrap;
beforeEach(() => {
server = sinon.fakeServer.create();
server.respondWith("GET", /\/api\/users/, [
200, {"Content-Type":"application/json"}, JSON.stringify(mock_pictures_list_store)
]);
store = new Pictures_List_Store([]);
wrap = mount(
<Selectable_Picture_List store={store} />
);
axios.get('http://localhost:9157/api/users/5/images/30/0');
console.log("%c server.requests", "color: #C78B41", server.requests);
});
afterEach(() => {
server.restore();
});
it('render drop zone', () => {
server.respond();
console.log("%c server.requests", "color: #C78B41", server.requests);
expect(wrap.find('Dropzone')).to.have.length(1);
});
});
Eu chamo
axios.get
solicitações diretamente no código de teste e também é chamado no método componentWillMount
de um componente react.js
axios.get()
é assíncrono. Isso significa que quando sua linha console.log
executada, o xmlhttprequest
ainda não foi criado.
Obrigado pela resposta. Mas no caso de eu usar server.autoRespond = true;
ou server.respondImmediately = true;
ou server.respond();
server.requests ainda está vazio. É certo que essas coisas não funcionem?
Existe alguma maneira de iniciar o teste de HTML com fakeServer?
Existe alguma maneira de iniciar o teste de HTML com fakeServer?
Sim, existe .
A solução para ver as solicitações em seu beforeEach
acima é dupla:
beforeEach
console.log
As mudanças seriam assim:
beforeEach(done => {
// ...
axios.get(...);
setTimeout(() => {
console.log("%c server.requests", "color: #C78B41", server.requests);
done();
});
});
Uau. Isso funciona! Obrigado. Finalmente, consegui criar os testes necessários.
Comentários muito úteis
Sim, existe .
A solução para ver as solicitações em seu
beforeEach
acima é dupla:beforeEach
console.log
As mudanças seriam assim: