Итак, у меня есть следующий вспомогательный метод -
import { FormFieldError, FormValidationRules } from "../../../types/form.type";
const isString = (value: any, fieldId: string, fieldName: string): FormFieldError | null => {
// Check if field value is of type string
if (typeof value !== 'string') {
return {
fieldId,
message: `${fieldName} must be string.`
};
}
return null;
}
const validateField = (value: any, rules: FormValidationRules[], fieldId: string, fieldName: string): FormFieldError | null => {
let error: FormFieldError | null = null;
// Let's go through each of the rules
for (const rule of rules) {
// Let's check against mandatory value
if (error === null && rule === 'string') {
error = isString(value, fieldId, fieldName);
} else if (error !== null) {
break;
}
}
// Let's return the error
return error;
}
export default validateField;
Теперь я хочу написать тест, который проверяет, вызывается ли метод isString
с использованием spyOn. Если я делаю что-то вроде этого -
import validateField from './FormValidationRules';
describe('Test if necessary functions are called', () => {
it('Should call isString method with according parameters', () => {
const isStringSpy = spyOn(validateField, 'isString');
validateField(null, ['string'], 'name', 'Name');
expect(isStringSpy).toHaveBeenCalled();
});
});
Он жалуется на Argument of type "isString" is not assignable to parameter of type 'never'
.
Если я пытаюсь добавить метод isString в функцию validateField, он все равно жалуется на ту же проблему.
Любые предложения приветствуются.