У меня есть тест для Mocha с использованием expect и supertest, который отлично работает. Но я не понимаю, как это работает. Я использую Express в качестве своего сервера вместе с mongodb и mongoose.
Я понимаю, как будет работать тестирование .get (), в этом есть смысл. Учебники на Youtube и документация по мокко не смогли дать мне никакого реального понимания.
describe('DELETE for a specific todo', ()=>{
it('should delete a todo', (done)=>{
let id0 = todos[0]._id
request(app)
.delete(`/todos/${id0}`)
.expect(200)
.expect((response)=>{
expect(response.body.todo._id).toBe(id0)
});
.end((err, res)=>{
if(err){
return done(err)
}
Todo.findById(id0).then((todo)=>{
expect(todo).toNotExist();
}).catch((err)=>done(err))
})
});
it('should fail to find ID in db', (done)=>{
request(app)
.delete(`/todos/${new ObjectID()}`)
.expect(500)
.end(done)
});
it('should fail due to invalid ID', (done)=>{
request(app)
.delete('/todos/999')
.expect(404)
.end(done)
});
});
Этот код работает просто найти, модель / коллекция в порядке, но как получается, что мокко тестирует .delete, не удаляя что-то из моей базы данных? Создает ли он фиктивную базу данных, а затем запускает на ней указанные тесты? Он что-то удаляет, запускает тест, а затем восстанавливает его? Я просто не понимаю, что делает mocha / supertest, когда я использую request (app) .delete (). Я имею в виду, что он ДОЛЖЕН изменять коллекцию, указанную моей моделью, иначе, если это будет невозможно для Todo (это модель имя) для правильной работы ....