【发布时间】:2020-06-24 01:42:29
【问题描述】:
我在 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,最终我的测试出现错误(即使测试都通过了:
收到的promise被拒绝而不是resolved被拒绝的值: [TypeError:无法设置未定义的属性“电子邮件”]
有人可以帮忙吗?我似乎无法弄清楚,为什么 user 未定义。
【问题讨论】:
标签: nestjs nestjs-testing