See*_*roy 6 testing mocking nestjs bullmq
我正在尝试测试在向我的一个控制器发送请求后,队列会推送一项作业。实现本身按预期工作。
这是我的app.module.ts
@Module({
imports: [
HttpModule,
TypeOrmModule.forRoot(typeOrmConfig),
BullModule.forRoot({
redis: {
host: redisConfig.host,
port: redisConfig.port,
},
}),
// Bunch of unrelated modules
],
providers: [
{
provide: APP_FILTER,
useClass: AllExceptionsFilter,
},
],
controllers: [SomeControllers],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
这就是我的import.module.ts(使用队列的模块)的样子:
@Module({
imports: [
BullModule.registerQueue({
name: importQueueName.value,
}),
//More unrelated modules,
],
providers: [
//More services, and bull consumer and producer,
ImportDataProducer,
ImportDataConsumer,
ImportDataService,
],
controllers: [ImportDataController],
})
export class ImportDataModule {}
Run Code Online (Sandbox Code Playgroud)
我尝试遵循这种方法
它没有在 beforeAll 钩子中注册队列,我得到了
Driver not Connected
Run Code Online (Sandbox Code Playgroud)
而这种做法
它在测试套件的 beforeAll 钩子中注册了一个队列,我得到:
TypeError: Cannot read properties of undefined (reading 'call')
at BullExplorer.handleProcessor (node_modules/@nestjs/bull/dist/bull.explorer.js:95:23)
at MapIterator.iteratee (node_modules/@nestjs/bull/dist/bull.explorer.js:59:26)
at MapIterator.next (node_modules/iterare/src/map.ts:9:39)
at FilterIterator.next (node_modules/iterare/src/filter.ts:11:34)
at IteratorWithOperators.next (node_modules/iterare/src/iterate.ts:19:28)
at Function.from (<anonymous>)
at IteratorWithOperators.toArray (node_modules/iterare/src/iterate.ts:227:22)
at MetadataScanner.scanFromPrototype (node_modules/@nestjs/core/metadata-scanner.js:12:14)
at node_modules/@nestjs/bull/dist/bull.explorer.js:56:34
at Array.forEach (<anonymous>)
Run Code Online (Sandbox Code Playgroud)
这是我的“基本测试套件”:
Driver not Connected
Run Code Online (Sandbox Code Playgroud)
知道这里可能出了什么问题吗?
小智 4
我也遇到了同样的问题,问题出在你的mockQueue。您需要添加一个process模拟函数。
这应该对你有用!
const importQueue: any = {
add: jest.fn(),
process: jest.fn(),
};
Run Code Online (Sandbox Code Playgroud)
这就是我测试的方法。
expect(mockQueue.add).toBeCalledTimes(1);
expect(mockQueue.add).nthCalledWith(
1,
PendoJobNames.SCR,
{
...mockJobDto,
},
{
jobId: mockDto.visitorId,
removeOnComplete: true,
removeOnFail: true,
},
);
```
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7113 次 |
| 最近记录: |