【发布时间】:2020-12-18 05:37:20
【问题描述】:
是否可以在打字稿中使用ts-mockito 模拟来自Express 的类请求?
我尝试了以下
import { Request, Response } from "express";
const request = mock(Request);
const req: Request = instance(request);
但在req 上出现错误:Type 'Request' is missing the following properties from type 'Request<ParamsDictionary>': get, header, accepts, acceptsCharsets, and 73 more.
【问题讨论】:
-
为什么要模拟一个请求?一般来说,单元测试控制器是个坏主意,请使用 Supertest 之类的东西。
-
@jonrsharpe 我想精确地模拟它以进行测试:以便在我的单元测试中我可以传递带有虚拟数据的自定义请求(和响应)对象。 (顺便说一句,我没有太多使用打字稿测试的经验????)
-
再一次,单元测试控制器是个坏主意。嘲笑你不拥有的东西也是如此!
-
我明白你的意思:模拟外部库是不好的做法,应该尽可能避免。由于我可能误解了自己,让我进一步说明我的情况:我正在测试一个由 http 请求触发的函数。为了做到这一点,我必须向它传递一些自定义参数。如果不通过模拟,您将如何将自定义参数传递给该函数?
-
再一次,你可以使用 Supertest 之类的东西来发出请求。如果您想对控制器使用处理请求的某些业务逻辑进行单元测试,请测试提供它的服务而不是控制器。
标签: typescript unit-testing express mocking ts-mockito