Итак, я новичок ie в мире TypeScript и Jest. Я упустил часть своих примеров кода для простоты.
По сути, у меня есть объект User
, который имеет приватный конструктор, потому что я использую фабричный метод stati c в этом классе , Этот фабричный метод возвращает экземпляр User
при успехе или список UserCreationFailure
с, если какое-либо предоставленное поле недопустимо.
Моя User
сущность выглядит следующим образом (обратите внимание, что это просто упрощенная псевдокод):
export class User {
// fields
private constructor(name: string, email: string, password: string) {
this.name = name;
this.email = email;
this.password = password;
}
public static create(name: string, email: string, password: string) : UserCreationFailure[], User {
// validations
return failures.length (failures : new User(name, email, password);
}
}
Также я пишу тест, чтобы убедиться, что мой фабричный метод работает нормально. Мой тест выглядит следующим образом:
it('should create user when all provided fields are valid', () => {
// arrange
// mock User class calling the private constructor
const mockUser = MockUserClass('Bruno', 'bruno@geosapiens.com.br', '12345678');
// act
const result = User.create('Bruno', 'bruno@geosapiens.com.br', '12345678');
// assert
expect(result).toStrictEqual(mockUser);
});
Но похоже, что я не могу использовать Jest для насмешки над классом User
, у которого есть приватный конструктор. Я хочу, чтобы этот фиктивный пользовательский экземпляр в фазе аранжировки моего теста сравнивал его с возвращенным пользовательским экземпляром фабричным методом.
Итак, мой вопрос: есть ли способ использовать Желаете издеваться над классом TypeScript с помощью частного конструктора, передавая ему параметры?
Я взглянул на документацию Jest о имитациях, но я ничего не нашел об этом конкретном c сценарии.
Спасибо за помощь.