在 Loopback 4 中创建一个模拟请求对象

Posted

技术标签:

【中文标题】在 Loopback 4 中创建一个模拟请求对象【英文标题】:Create a mock Request object in Loopback 4 【发布时间】:2021-12-03 18:52:32 【问题描述】:

我有一个 Loopback 4 控制器,我想对它进行单元测试。如何模拟请求参数?这是我的控制器的构造函数:

  constructor(@inject(RestBindings.Http.REQUEST) private req: Request,
              @service(HttpService) private httpService: HttpService,
              @service(LocalRequestService) private localRequestService: LocalRequestService) 

我尝试用createStubInstance(Request) 模拟它,但这给了我这个错误:

Argument of type 'StubbedInstanceWithSinonAccessor<Request>' is not assignable to parameter of type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>'.
  Type 'StubbedInstanceWithSinonAccessor<Request>' is missing the following properties from type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>': get, header, accepts, acceptsCharsets, and 68 more.ts(2345)

【问题讨论】:

【参考方案1】:

可以使用stubExpressContext。

const context = stubExpressContext();
const controller = new MyController(context.request);

可以将选项传递给 stubExpressContext。

More..

【讨论】:

以上是关于在 Loopback 4 中创建一个模拟请求对象的主要内容,如果未能解决你的问题,请参考以下文章

在c#中创建一个json请求对象

在改造中创建动态对象请求

在lua中创建字段安全的对象

Java开发需要学什么!在java中创建线程有几种方法

在 Java 中创建对象数组

Mockery - 在构造函数中创建一个模拟