Я работаю над проектом nodeJs, используя машинопись. Здесь я использую класс-валидатор для проверки входных данных и использую jest для запуска модульного теста.
Однако я не уверен, как я могу проверить настроенное сообщение об ошибке. Я видел множество функций для использования, но почти ничего для класса.
Вот сообщение об ошибке
Matcher error: received value must be a function
Received has type: string
Received has value: "1"
Вот мой код
unit_test.ts
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code> describe("GET: search/api", () => {
class MyClass {
@IsDefined()
@Validate(DateConditionCheck, {
message: 'Please check your date input!'
})
dd: number;
};
const model: any = new MyClass ();
model.dd = 1;
it('should throw an error message when date input is incorrect', async () => {
return validate(model).then(errors => {
expect(errors.length).toBe(1);
expect(model.dd).toThrow('Date condition seems wrong!');
});
});
});
dateconditioncheck.ts
<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-html lang-html prettyprint-override"><code> import {
IsDefined,
IsBoolean,
IsString,
IsEmail,
IsNumberString,
IsAlphanumeric,
IsNotEmpty,
MaxLength,
MinLength,
IsNumber,
IsEnum,
IsOptional,
Max,
Min,
Length,
Matches,
Validate,
ValidatorConstraint,
ValidatorConstraintInterface,
ValidationArguments,
registerDecorator,
ValidationOptions
} from 'class-validator'
import * as moment from 'moment'
/**
* Custom validator
*
*/
@ValidatorConstraint({ name: 'dateConditionCheck', async: false })
export class DateConditionCheck implements ValidatorConstraintInterface {
validate(text: any, args: ValidationArguments) {
const jsondata = JSON.parse(JSON.stringify(args.object))
if (args.property === 'dd') {
return moment(Number(jsondata.yyyy) + '-' + Number(jsondata.mm) + '-' + Number(jsondata.dd), 'YYYYMMDD').isValid()
}
if (args.property === 'dd2') {
return moment(
Number(jsondata.yyyy2) + '-' + Number(jsondata.mm2) + '-' + Number(jsondata.dd2),
'YYYYMMDD'
).isValid()
}
return true
}
defaultMessage(args: ValidationArguments) {
return 'Please check your date input!'
}
}
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация , Цените все ваши подсказки!