unit-testing - 如何在测试服务层事务代码时将 jest.spyOn 与 NestJS 一起使用
问题描述
我正在编写单元测试用例来测试我的一种服务方法,该方法上传文件并使用 queryRunner 但模拟无法正常工作
let service = module.get<MemberService>(MemberService); //service class
describe('bulk add member',() =>{
const path = join(__dirname, '../..', 'templates/member.csv'); //it has 4 records
const buffer = Buffer.from(readFileSync(path).toString());
it('should return the correct value and type', async () => {
const queryRunner = connection.createQueryRunner();
jest.spyOn(queryRunner.manager.getRepository<Member>(Member), 'save');
const result = await service.bulkAddMemberData(
{buffer} as any,'','','');
console.log(result.length)
expect(result.length).toEqual(4);
});
it('should throw an unprocessable entity exception', async () => {
const queryRunner = connection.createQueryRunner();
jest.spyOn(queryRunner.manager.getRepository<Member>(Member), 'delete').mockRejectedValue({ message: '' });
await expect(service.bulkAddMemberData({}as any,'','','')).rejects.toThrow(
UnprocessableEntityException
);
});
I get the below error code
expect(received).rejects.toThrow()
Received promise resolved instead of rejected
Resolved to value: []
95 | jest.spyOn(queryRunner.manager.getRepository<Member>(Member), 'delete').mockRejectedValue({ message: '' });
> 96 | await expect(service.bulkAddMemberData({}as any,'','','')).rejects.toThrow(
| ^
97 | UnprocessableEntityException
98 | );
99 | });
at expect (../node_modules/expect/build/index.js:134:15)
at Object.<anonymous> (modules/members/member.service.test.ts:96:13)
在上面的代码中 jest.spyOn 不能正常工作
解决方案
推荐阅读
- javascript - 使用ajax Django刷新表而不刷新页面
- mysql - 使用 node.js 在 mysql 中插入多条记录失败
- python - 过滤数据框中的数据
- ruby-on-rails - 当用户在 Ruby on Rails 6 中输入错误时,如何不将字符串转换为 0?
- node.js - 在 node.js 中的 Array 中创建 JSON 数组
- java - 如何在内存中提取zip文件
- watchkit - 如何以编程方式在 Apple Watch 上设置屏幕亮度
- python - 尽管创建附件和上传附件 API 成功,但上传的文件在 azure devops repos 分支中仍然不可见
- google-api - Google 自定义搜索引擎的全局注释限制是如何实施的?
- php - Laravel 中的收藏夹功能问题