Что такое TypeError: mime.lookup не является функцией в Supertest?

Я только что обновился до узла 14.15.4, и теперь любой супертестовый почтовый запрос с отправкой завершается с ошибкой «TypeError: mime.lookup не является функцией».

      
    it("Should be able to select an address", () => {
        return request(app).post(`/admin/machines/${newmachine._id}/assignments/add`)
        .send({userid: testuser._id.toString()})
        .expect(302)
        .then( (res) => {
            expect(res.headers.location).to.include(`/admin/machines/${newmachine._id}`);
        });
    });

Я получаю ошибку:

             Should be able to select an address:
     TypeError: mime.lookup is not a function
      at Test.Request.type (node_modules/supertest/node_modules/superagent/lib/node/index.js:265:38)
      at Test.RequestBase.send (node_modules/supertest/node_modules/superagent/lib/request-base.js:575:21)
      at Context.<anonymous> (test/routes/admin/machines.js:275:10)
      at processImmediate (internal/timers.js:461:21)

Если, однако, я использую "поле" вместо отправки, ошибка исчезнет:

              return request(app).post(`/admin/machines/${newmachine._id}/assignments/add`)
        .field('userid',testuser._id.toString())
        .expect(302)
        .then( (res) => {
            expect(res.headers.location).to.include(`/admin/machines/${newmachine._id}`);
        });
    });

Что мне не хватает?

1 ответ

Я нашел ответ или, по крайней мере, исправление. Если я добавлю:

      .set('Content-Type','application/x-www-form-urlencoded')

ошибка исчезнет. Итак, чтобы обновить исходный код выше:

      it("Should be able to select an address", () => {
    return request(app).post(`/admin/machines/${newmachine._id}/assignments/add`)
    .set('Content-Type','application/x-www-form-urlencoded')
    .send({userid: testuser._id.toString()})
    .expect(302)
    .then( (res) => {
        expect(res.headers.location).to.include(`/admin/machines/${newmachine._id}`);
    });
});

Хотя с педантичной точки зрения, это не обязательно точный тест, поскольку тип формы изменен на «x-www-form-urlencoded», но, учитывая, что реализации node.js надежно поддерживают любой тип формы взаимозаменяемо, это, вероятно, подходит для всех целей тестирования.

Другие вопросы по тегам