Я пытаюсь сгенерировать некоторые утверждения для проверки моего Restful CRUD API, но я не знаю, как тестировать новые сгенерированные документы. Я также использую Express + Firebase, так что я смог легко тестировать пользователей, поскольку идентификатор - это само письмо. Но в случае любых других документов идентификаторы создаются случайным образом.
Например, мой пользовательский тест выглядит следующим образом:
describe('POST - /api/admin/users', () => {
it('Should create a user', done => {
const user: IUser = {
name: 'User TDD Test',
email: 'tdd@test.com',
password: '123456',
createdAt: 1585848131576
};
chai.request(server)
.post('/api/admin/users')
.send(user)
.end((err, response) => {
response.should.have.status(201);
response.body.should.be.an.instanceOf(Object);
response.body.should.have.property('message').eq('User created');
response.body.should.have.property('data')
.and.be.an.instanceOf(Object)
.and.have.property('name').eq('UserTDD Test');
response.body.should.have.property('ok').eq(true);
done();
});
});
});
describe('PUT - /api/admin/users/:email', () => {
it('Should update a user', done => {
const email = 'tdd@test.com'
const user: object = {
password: '1234567',
updatedAt: 1585848131576
};
chai.request(server)
.put('/api/admin/users/' + email)
.send(user)
.end((err, response) => {
response.should.have.status(201);
response.body.should.be.an.instanceOf(Object);
response.body.should.have.property('message').eq('User updated');
response.body.should.have.property('data').eq(null);
response.body.should.have.property('ok').eq(true);
done();
});
});
});
Здесь легко обновить тот же документ, так как они поделиться тем же адресом электронной почты. Но, например, если я хочу обновить любую другую коллекцию сгенерированным идентификатором, я не смогу протестировать создание и обновления таким же образом, верно?
Например, если у меня есть такой же код для collection "tickets":
describe('POST - /api/admin/tickets', () => {
it('Should create a ticket', done => {
const ticket: ITicket = {
owner: 'tdd@test.com',
status: 'Open',
createdAt: 1585848131576
};
chai.request(server)
.post('/api/admin/tickets')
.send(ticket)
.end((err, response) => {
response.should.have.status(201);
response.body.should.be.an.instanceOf(Object);
response.body.should.have.property('message').eq('Created ticket');
response.body.should.have.property('data')
.and.be.an.instanceOf(Object)
.and.have.property('owner').eq('tdd@test.com');
response.body.should.have.property('ok').eq(true);
done();
});
});
});
Тогда предыдущий сгенерированный тикет имеет свойство ID с неизвестным значением, поэтому я должен проверить «метод PUT» для другого тикета с известным ID?