У меня есть mocha, chai and sinon
Javascript инфраструктура тестирования и библиотека доступны для приложения, которое я унаследовал. Я новичок во всех ^ них и я читаю их APIs
, чтобы научиться правильно их использовать.
Вот объект Javascript, который я хочу проверить. Если ожидаемое свойство name
отсутствует, валидатор сгенерирует UsageError: name property is missing
.
// person object
const person = { name: 'peter' }
// validate method of exported validator JS component
async validate(person) {
const { name } = person;
const promises = [];
if (typeof name !== object) { throw new UsageError('name property is missing'); }
...
else { promises.push(fooService(name)); }
try {
await Promise.all(promises);
} catch (error) { throw (error); }
}
// unit test in sinon
describe('Validate person', async function() {
it('should throw error not find name property', async function() {
const person = { 'foo': '1234 somewhere' };
try {
await validator.validate(person);
} catch(error) {
sinon.assert.match(error, 'name property is missing');
}
});
Это код async + await
, так что я мало знаю, что sinon
подойдет тогда, когда я выполню модульный тест, Я даже озадачен следующей ошибкой:
AssertError: expected value to match
expected = UsageError: name property is missing
actual = UsageError: name property is missing
Оба actual
и expected
выглядят одинаково в строке, я думаю, но я не понимаю, почему я получил AssertError
. Я был бы признателен, если бы кто-нибудь объяснил мне, что я делаю неправильно, и указал, как правильно выполнить этот тестовый модуль. Ty!
[обновление]
Извиняюсь, я понял, что дал неверный пример в тестовом примере, который я опубликовал. Я исправил это, имея person object does not contain name property
.