Comments (9)
I prefer the first option, clearly, thanks for asking :)
No dia 03/02/2012, Γ s 21:22, Ian Young
[email protected]
escreveu:
I noticed that in my tests using nock, if one test failed to fulfill an expectation, subsequent tests that set up the same expectation would fail, because the requests were being hijacked by a lingering intercept from the previous test. I wrote a test that demonstrates:
tap.test("scopes are independent", function(t) { var scope1 = nock('http://www.google.com') .get('/') .reply(200, "Hello World!"); var scope2 = nock('http://www.google.com') .get('/') .reply(200, "Hello World!"); var req = http.request({ host: "www.google.com" , path: '/' , port: 80 }, function(res) { res.on('end', function() { t.ok(scope1.isDone()); t.ok(scope2.isDone()); // fails t.end(); }); }); req.end(); });What's your preferred way to fix this?
One intercepted request could fulfill expectations from multiple scopes (in other words, the above test would pass without modification).
nock.restore()
could clear out whatever is hanging around to cause this. Test would change to something like this:tap.test("scopes are independent", function(t) { var scope1 = nock(/*...*/); nock.restore(); var scope2 = nock(/*...*/); var req = http.request({ //... }, function(res) { res.on('end', function() { t.notOk(scope1.isDone()); t.ok(scope2.isDone()); t.end(); }); }); req.end(); });Similar to the previous option, but give the duty to a new method rather than
restore
.
Reply to this email directly or view it on GitHub:
#30
from nock.
Sorry, backtracking here.
There is no way to make the scopes independent, since the app will be making direct calls to the HTTP module, not referencing a scope.
The interceptors are created globally, which means that what you are experiencing is the correct behavior.
There is no way to tell which scope will be caught first, depends on which request fires first.
When using nock I don't do my tests in parallel, which makes debugging stuff like this much easier.
I added some tests for this, which I think is correct behavior:
from nock.
Is this current behavior the desired behavior or just the expected behavior? I haven't looked closely at the interceptor internals yet, but I imagine we could change it to what I described in the first option - just need to key by a reference to scope object or something.
from nock.
So right now we're still left with cascading failures from one unsatisfied mock. If nothing else, I'd like to go for the second option, but I'm hoping to get your opinion on the above first.
from nock.
Thinking again about this, a nice feature would be to globally clean up all mocks, thinking of
nock.cleanAll();
I'll be working on this.
Sorry for the delay :)
from nock.
nock v0.10.1 now supports:
nock.cleanAll() that wipes the mocks that are setup.
please reopen this if it doesn't work for you.
Thanks!
from nock.
Perfect! Added this to my test setup and it works great.
from nock.
this crushed my productivity today. #253
from nock.
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue and add a reference to this one if itβs related. Thank you!
from nock.
Related Issues (20)
- [Node 18.12] Class extends value undefined is not a constructor or null HOT 2
- incompatible behaviour introduced with v13.3.2 HOT 17
- Interceptors not being removed in 13.3.2 HOT 2
- Replace npm debug with require('node:util').debuglog HOT 2
- Remove lodash HOT 1
- Application to become a nock maintainer. HOT 5
- Expand function fails on weird GET query params HOT 4
- reqheaders does not work when using an undefined requestBody HOT 3
- Add interceptor at the beginning of list
- Return 500 instead of 404 HOT 4
- Bun support for nock.disableNetConnect() HOT 1
- DNS resolve errors and not mocking a lot of requests HOT 7
- POST request with ReadStream request body does not return a response HOT 10
- Disabled discussions HOT 6
- Improve debug logging HOT 2
- Support Abort Signals HOT 1
- Add JSDoc HOT 8
- Using nock inside a stream pipeline with got causes it to hang forever since Node 20.10.0 HOT 2
- Debug logging broken in beta (14.0.0-beta.5) HOT 1
- Error when code cancels fetch response body stream (14.0.0-beta.6) HOT 3
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 nock.