Comments (7)
Here's how I'm doing it:
beforeEach(() => moxios.install());
afterEach(() => moxios.uninstall());
it('should work with async/await', async () => {
makeSomeAxiosRequest();
await respondWith(whatever);
assert.equal(something, expectation);
});
function respondWith(response) {
return new Promise((resolve, reject) => {
moxios.wait(() => {
moxios.requests.mostRecent().respondWith({
status: 200,
response,
}).then(resolve, reject);
});
});
}
from moxios.
I've since switched to axios-mock-adapter. moxios was unreliable creating "Heisenbugs" in my tests that would happen intermittently. It was also quite a bit slower than axios-mock-adapter, which has been very reliable.
from moxios.
I have this defined near my moxios import, I like using it with stubRequest
const moxiosWait = () => new Promise((r) => moxios.wait(r));
Then, I can use stubRequest
in before callbacks and have test examples like this:
it('should work with async/await', async () => {
makeSomeAxiosRequest();
await moxiosWait();
assert.equal(something, expectation);
});
from moxios.
@luisrudge and @locnguyen I think this makes more sense. Call moxios.wait
before the method that you want to await
. Doing it this way allows us to avoid calling done()
:
import moxios from 'moxios';
describe('test', () => {
beforeEach(() => moxios.install(axios));
afterEach(() => moxios.uninstall(axios));
it('does http request', async () => {
const data = { whatever: 1 };
moxios.wait(() => {
moxios.requests.count().should.eql(1); // sorry, I use shouldjs here
const request = moxios.requests.mostRecent();
request.respondWith({
status: 200,
response: data,
});
});
let result = await axios.get('https://google.com/'); //make sure this is called after moxios.wait
result.data.whatever.should.eql(1);
});
});
from moxios.
@luisrudge Have you resolved this yet? I am trying the same
from moxios.
yeah.. I'm using something like that:
import moxios from 'moxios';
describe('test', () => {
beforeEach(() => moxios.install(axios));
afterEach(() => moxios.uninstall(axios));
it('does http request', (done) => {
axios.get('https://google.com/'); //don't await this function
moxios.wait(async() => {
expect(moxios.requests.count()).toBe(1);
const request = moxios.requests.mostRecent();
await request.respondWith({ status: 200 });
done();
});
});
});
from moxios.
This works for me:
it("axios tests", async function () {
moxios.stubRequest("/tst/hr", {
status: 200,
responseText: "hey",
});
let callBack = sandbox.spy();
axios.get("/tst/hr").then(callBack);
sinon.assert.notCalled(callBack);
await moxios.await();
sinon.assert.calledOnce(callBack);
});
from moxios.
Related Issues (20)
- Using `isAxiosError` on a `moxios.stubRequest` where status is 500.
- Is this project alive? HOT 7
- can
- can moxios catch request from click event? HOT 1
- Tracker.get() method tests RegExp against itself rather then testing url with it
- Wildcard Mock Not Working HOT 1
- why catch method is not invoked? HOT 4
- request.reject undefined (using typescript) HOT 2
- Moxios (0.4.0) not working with Axios 0.19.1 HOT 1
- stubRequest inside withMock doesn't work
- Wrong example in README HOT 1
- Flaky Tests with Moxios
- How can i mock only urls with specific pattern.
- moxios.requests.mostRecent() is returning undefined HOT 8
- Mix real requests with mock requests ? HOT 1
- how to use moxios to return streams that have images HOT 1
- Is there any plan to release the next version? HOT 1
- Stubs for certain request methods? HOT 6
- Bug: moxios.wait doesn't call axios promise if the axios call being tested passes params into it
- Any support for [email protected]?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from moxios.