Использование метода PUT на Supertest

Как использовать метод PUT с SuperTest? Все, что я получаю, это «404 Not found» в качестве ответа.

Обработчик запроса:

router.put('/', function (req, res) {
    res.type('json');

    FooResource(req.body, function () {
        res.send("{}");
    });
});

Набор тестов:

describe("PUT /foo/fii", function () {

    it("Respond with 200", function (done) {

        request(app)
            .put('/')
            .set('Accept', 'application/json')
            .expect(200, done);

    });
});

person Jesper    schedule 05.03.2017    source источник


Ответы (2)


Добавлен:

    it("Respond with 200", function (done) {

        request(app)
            .put('/')
            .send("{}")
            .expect(200)
            .end(function(err, res) {
                done();
            })

    });

И теперь это работает (?)

person Jesper    schedule 05.03.2017
comment
это должно быть done(err) или .end(done). В противном случае он не будет проверять статусCode - person Falci; 29.03.2021

Позвольте мне поделиться здесь примером использования промисов, который не требует done():

describe('PUT: update task (id:5)', function() {
    test('It should return response 200.', function() {
        return request(app)
            .put('/api/v1.0/tasks/5')
            .send({title:'Code Refactor API',user:'ivanleoncz'})
            .expect(200);
    });
});

Для получения дополнительной информации: https://www.npmjs.com/package/supertest.

person ivanleoncz    schedule 04.04.2019