Usar o servidor falso da Sinon não parece afetar o Axios, que usa http
no ambiente de nó (e XMLHttpRequest
para o navegador).
Estou usando o Mocha . Estou evitando o corredor do carma porque não vejo necessidade. Não, a menos que o nó http
não seja suportado.
Aqui está uma demonstração . Basta cloná-lo e executar npm test
.
Os testes reais estão aqui: https://github.com/srph/axios-response-logger/blob/master/tests/spec.js
Eu presumiria que a ordem pode explicar o comportamento, mas não tenho certeza se a criação de sandbox explícita é a coisa certa a fazer de qualquer maneira. Terá que investigar mais tarde.
Parece que ainda não funciona com axios.
Não sei por que não fechei isso da primeira vez: ao inspecionar, vejo que os testes estão sendo executados no Node. Isso é totalmente incompatível _naturalmente_ para uma implementação de XHR. Se os testes fossem executados em um navegador, digamos usando mochify
ou Karma, seria outra coisa, já que os stubs XHR têm como alvo o ambiente do navegador.
@brunolm : Eu ainda não vi um teste em execução em um navegador que falhe, então não haverá ninguém investigando isso até que aconteça. Os detalhes sobre como obter o stub XHR de uma biblioteca de teste funcionando em uma biblioteca HTTP para Node e o navegador ao ser executado no Node está definitivamente fora do escopo para nós 😄 Se você estiver fazendo algo assim, eu tentaria criar um axios equivalente a supertest
(para SuperAgent).
Para sua informação: axios já tem sua própria biblioteca de stub ,
Resolvi isso usando aliases de método de solicitação de axios, em vez de passar a configuração e iniciar a solicitação. Ou seja, em vez de
axios(config)
eu usei
axios[method](url, data, config)
Então agora,
sandbox.stub(axios, "get").returns(Promise.resolve({status:200, body: searchResponse}));
Isso é mais limpo do que usar os moxios da biblioteca.
Comentários muito úteis
Resolvi isso usando aliases de método de solicitação de axios, em vez de passar a configuração e iniciar a solicitação. Ou seja, em vez de
axios(config)
eu usei
axios[method](url, data, config)
Então agora,
sandbox.stub(axios, "get").returns(Promise.resolve({status:200, body: searchResponse}));
Isso é mais limpo do que usar os moxios da biblioteca.
Resposta Stackoverflow