我在 NestJS 应用程序的测试文件中看到一个奇怪的错误。我似乎无法弄清楚,出了什么问题:我有一个 TypeORM 存储库的测试文件:
describe('UserRepository', () => {
let userRepository;
beforeEach(async () => {
const module = await Test.createTestingModule({
providers: [
UserRepository,
],
}).compile();
userRepository = await module.get<UserRepository>(UserRepository);
});
describe('signUp', () => {
let save;
beforeEach(() => {
save = jest.fn();
userRepository.create = jest.fn().mockReturnValue({ save });
});
it('successfully signs up the user', async () => {
save.mockResolvedValue(undefined);
expect(
userRepository.createUser(mockCredentialsDto),
).resolves.not.toThrow();
});
});
});
和一个存储库:
@EntityRepository(User)
export class UserRepository extends Repository<User> {
async createUser(signUpDto: SignUpDto) {
const { password, email } = signUpDto;
const salt = await bcrypt.genSalt();
const encodedPassword = await bcrypt.hash(password, salt);
const user: any = this.create();
user.email = email;
user.password = encodedPassword;
user.salt = salt;
await user.save();
return user;
}
}
但是,该this.create()
方法似乎不起作用。它似乎回来undefined
了,最终我的测试出现错误(即使测试都通过了:
收到的承诺被拒绝而不是解决被拒绝的值:[TypeError:无法设置未定义的属性“电子邮件”]
任何人都可以帮忙吗?我似乎无法弄清楚,为什么user
是未定义的。