小编Moj*_*982的帖子

在 NestJS 应用程序中注入 Mock 以进行合同测试

问题

我正在寻找一种使用模拟提供程序启动 NestJS 应用程序的方法。这对于提供者合同测试是必要的,因为需要单独启动服务。使用 Pact 库,测试提供者假定提供者服务已经在运行。它需要能够针对实际服务器发出 HTTP 请求(如有必要,可以模拟一些依赖项)。契约JS

目前的研究

我查看了 NestJS 的文档,我能找到的最接近的解决方案粘贴在下面。据我所知,这个解决方案告诉模块CatsServicecatsService. 这理论上适用于提供者合同测试目的,但我认为这不允许启动整个应用程序,只是一个模块。文档中没有提到能够使用测试模块在特定端口上启动应用程序。我试图调用app.listen返回的应用程序对象,但它未能命中调用后立即放置的断点。

import * as request from "supertest";
import { Test } from "@nestjs/testing";
import { CatsModule } from "../../src/cats/cats.module";
import { CatsService } from "../../src/cats/cats.service";
import { INestApplication } from "@nestjs/common";

describe("Cats", () => {
  let app: INestApplication;
  let catsService = { findAll: () => ["test"] };

  beforeAll(async () => {
    const module = await Test.createTestingModule({
      imports: [CatsModule]
    })
      .overrideProvider(CatsService)
      .useValue(catsService) …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript pact nestjs

7
推荐指数
1
解决办法
4818
查看次数

标签 统计

javascript ×1

nestjs ×1

node.js ×1

pact ×1

typescript ×1