使用Jest测试POST请求时出现“EPIPE”错误

时间:2017-10-06 09:13:27

标签: javascript node.js jestjs

我有一个简单的服务器接受POST个请求,如果请求正文超出允许的大小,则会响应413 Request entity too large错误。当我使用Jest测试它时,请求有时会返回正确的错误,但更多时候它会返回{ code: EPIPE, syscall: write }错误。

我使用cURL和节点javascript文件测试了服务器,服务器按预期工作,但是Jest测试仍然给我错误。我还尝试了另一个请求库,他们也给出了同样的错误。

beforeAll(() => {
  server.listen(testingPort);
});

afterAll(() => {
  server.close();
});

describe("POST request", () => {
  test("should return error 413 in respense to exceeded file size", async () => {
    const fileContent = new Array(1024 * 1024 + 10).join("*");
    const fileName = "post-test-file.txt";
    const urlObj = new URL(fileName, host);

    try {
      await axios.post(urlObj.href, fileContent);
    } catch (e) {
      console.log(e.code, e.errno, e.syscall); // EPIPE EPIPE write
      // expect(e.response.status).toBe(413);
    }
  });

也许您对此有任何想法?

1 个答案:

答案 0 :(得分:0)

这个问题似乎已经很久了,并没有得到很好的解决:

https://github.com/nodejs/node/issues/947

对我来说,解决方法是使用流。