使用node Webshot在测试期间模拟nock.js发送的请求的正确方法是什么?
我尝试使用代码捕获http://example.com/foo.html作为foo.png
的模拟响应,但模拟似乎不起作用。
const nock = require("nock");
const webshot = require("webshot");
describe("mock webshot request", function(){
this.timeout(20000);
beforeEach(function(){
nock("http://example.com").persist().get("/foo.html").reply(200, "<h1>Foo</h1>");
});
afterEach(function () {
nock.cleanAll();
});
it("captures mocked response", function(done){
webshot("http://example.com/foo.html", "foo.png",function(err) {
nock.isDone();
if(!err) done();
});
});
});
编辑:
解决方案是将模拟的响应主体传递给Webshot而不是url:
webshot("<h1>Foo</h1>", ...
答案 0 :(得分:1)
Nock
期望http请求在同一进程中发生。
注意: node-webshot
是PhantonJS的包装器,它在另一个进程中运行。
在您的情况下,Nock
在一个进程中设置,但http请求在另一个进程中发生。所以你不能像你当前那样模仿node-webshot
完成的http请求。
您需要支持模拟内置于node-webshot
的http请求,即如果没有它,则必须将此功能添加到node-webshot
。