New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Intercept requests with nock #305
Comments
I wrote this on #175 but are you failing on a POST request from axios? I'm getting mismatch on nock because nock seems to be attempting to match OPTIONS method. #225 I'm using axios 0.10.0 and nock 8.0.0. Here's my nock interception code: nock('http://localhost:5000')
.post(`/path`, data)
.log(console.log)
.reply(200, { id: 1 }) My axios initialization: import axios from 'axios'
const instance = axios.create({
baseURL: (process.env.NODE_ENV === 'production') ? 'https://foo.com/' : 'http://localhost:5000/',
headers: {
...
}
})
export default instance Calling axios: axios.post('/path', {}) Then I get
When I run it with I'm seeing a bunch of OPTIONS requests, maybe nock isn't correctly matching against it? |
@chibicode yeah, this is probably what is happening, have you been able to fix this? |
Same problem here not able to test with nock. |
I don't have much experience with nock, but I have a couple suggestions for what it's worth.
|
Closing due to inactivity. Hoping that |
Edit: Oh, my. I just realized that the Using:
I tried I'm also using I'm probably using all of this incorrectly, but would love to read others' thoughts. 😃 This is the error I'm receiving:
|
After three days of 'nock'ing my head against the wall, I found this post and tried moxios. Worked first time. Thank you @mzabriskie for preventing me from retiring as a developer and becoming a barista ;) |
Works for me: import {expect} from 'chai'
import axios from 'axios' // v0.15.3
import httpAdapter from 'axios/lib/adapters/http'
import nock from 'nock' // v9.0.2
const host = 'http://localhost';
axios.defaults.host = host;
axios.defaults.adapter = httpAdapter;
describe('suite', () => {
it('test', done => {
nock(host)
.get('/test')
.reply(200, 'test data');
axios.get('/test').then(response => {
expect(response.data).to.be.equal('test data');
done();
});
});
}); |
to test the React lifecycle, I need to add not in the test file but in other files (my action creator that import axios, so adding the line in test will not help) |
nice. The bad thing about this is that now your tests need to know about axios not just nock. But glad you found a hybrid solution that allows you to use nock still. I don't like the fact that my tests must know about axios. When I've used superagent, my tests used nock and didn't know jack about superagent which means my tests are more decoupled to the real implementation they are testing |
I believe the ideal solution would be nock to transparently fallback to xhr-mock when appropriate? as i suggested recently here: nock/nock#1160 |
If you use axios v18.0, make sure that you set the nock host to be the same as axios baseURL // Instead of
axios.defaults.host = host;
axios.defaults.baseURL = host;
// Then
nock(host)... |
TL;DR - if you are using Jest and testing under node.js env add this to your Behind the scene Some insight from my experience, taken from axios.js
so the issue here that the test environment DOES have |
Hi, i wanted to know if it is posible to intercept requests made by axios with nock for testing purposes, has anyone tried that?
thanks in advanced for your help
The text was updated successfully, but these errors were encountered: