首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟弹性搜索的批量方法

如何模拟弹性搜索的批量方法
EN

Stack Overflow用户
提问于 2021-12-14 13:40:27
回答 1查看 439关注 0票数 0

我正在对我的searchService进行测试,并且我意识到用于向elasticSearch db插入数据的大容量方法有一些实习生操作。

代码语言:javascript
复制
beforeEach(async () => {
const moduleRef: TestingModule = await Test.createTestingModule({
  providers: [
    SearchService,
    {
      provide: ElasticsearchService,
      useValue: {
        bulk: jest.fn(),
        count: jest.fn(),
        helpers: {
          scrollSearch: jest.fn(),
        },
        search: jest.fn(),
      },
    },
    {
      provide: PrismaService,
      useValue: {
        skus: {
          findMany: jest.fn().mockResolvedValueOnce(findManyMock),
          findUnique: jest.fn().mockResolvedValue({}),
          update: jest.fn().mockResolvedValue({}),
          create: jest.fn().mockResolvedValue({}),
          delete: jest.fn().mockResolvedValue({}),
        },
      },
    },
  ],
}).compile();

批量方法称为:

代码语言:javascript
复制
for await (const chunk of arrayOfBulkBodiesInChunks) {
  const bulkBody = chunk.flatMap((doc) => [
    { index: { _index: this.index } },
    doc,
  ]);

  await this.elasticsearchService.bulk({
    refresh: true,
    body: bulkBody,
  });
}

我在请求帮助为批量操作编写一个模拟程序。

EN

回答 1

Stack Overflow用户

发布于 2021-12-14 20:01:29

Hi,您可以模拟您的依赖项或提供程序,尝试如下:

在同一个文件目录下,创建一个名为/service/mocks/ElasticsearchService.ts

  • The

  • 的文件,例如: ElasticsearchService定位在/ service /ElasticsearchService.ts中,创建一个文件 ElasticsearchService.ts --它将将该服务导出到模拟

代码语言:javascript
复制
    export const ElasticsearchService = jest.fn().mockReturnValue({
     //Name here the function to mock
     bulk: jest.fn().mockReturnValue({
    bulk: jest.fn(),
    count: jest.fn(),
    helpers: {
      scrollSearch: jest.fn(),
    },
    search: jest.fn(),
  })

然后在你的测试乞讨。

代码语言:javascript
复制
jest.mock('/file/ElasticsearchService') //Type here the exact ubication of your ElasticsearchService, jest automatically will implement the file with the same name in the folder __mocks__

```beforeEach(async () => {

const moduleRef: TestingModule =等待Test.createTestingModule({

提供者:[

代码语言:javascript
复制
SearchService,
代码语言:javascript
复制
{
代码语言:javascript
复制
  provide: ElasticsearchService,
代码语言:javascript
复制
  useValue: {
代码语言:javascript
复制
    bulk: jest.fn(),
代码语言:javascript
复制
    count: jest.fn(),
代码语言:javascript
复制
    helpers: {
代码语言:javascript
复制
      scrollSearch: jest.fn(),
代码语言:javascript
复制
    },
代码语言:javascript
复制
    search: jest.fn(),
代码语言:javascript
复制
  },
代码语言:javascript
复制
},
代码语言:javascript
复制
{
代码语言:javascript
复制
  provide: PrismaService,
代码语言:javascript
复制
  useValue: {
代码语言:javascript
复制
    skus: {
代码语言:javascript
复制
      findMany: jest.fn().mockResolvedValueOnce(findManyMock),
代码语言:javascript
复制
      findUnique: jest.fn().mockResolvedValue({}),
代码语言:javascript
复制
      update: jest.fn().mockResolvedValue({}),
代码语言:javascript
复制
      create: jest.fn().mockResolvedValue({}),
代码语言:javascript
复制
      delete: jest.fn().mockResolvedValue({}),
代码语言:javascript
复制
    },
代码语言:javascript
复制
  },
代码语言:javascript
复制
},

],

).compile();`

代码语言:javascript
复制

希望你能解决它,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70349833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档