【发布时间】:2021-04-03 17:31:06
【问题描述】:
我使用 Jest 进行测试,TypeORM 作为 ORM,MySQL 是数据库。
我有一个与时间相关的查询,如果 DAY(NOW()) 小于 27,它将返回结果。
.andWhere('DAY(NOW()) <= 27')
我不希望我的测试在 28 日中断,我应该如何在数据库上模拟/替换它?
还有更优雅的方式吗?
【问题讨论】:
标签: mysql node.js testing jestjs typeorm
我使用 Jest 进行测试,TypeORM 作为 ORM,MySQL 是数据库。
我有一个与时间相关的查询,如果 DAY(NOW()) 小于 27,它将返回结果。
.andWhere('DAY(NOW()) <= 27')
我不希望我的测试在 28 日中断,我应该如何在数据库上模拟/替换它?
还有更优雅的方式吗?
【问题讨论】:
标签: mysql node.js testing jestjs typeorm
您可以将日期作为参数注入。假设您的查询在函数doQuery 中被调用。给函数加一个参数dayNum,在函数内部这样使用。
.andWhere(':day <= 27', { day: dayNum })
从生产代码中调用
var now = new Date();
doQuery(now.getDate());
然后在您的测试代码中,使用适合测试用例的任何 dayNum 参数调用它。
【讨论】: