【发布时间】:2020-12-27 01:24:30
【问题描述】:
我正在使用 typescript 创建一个 API,并且像往常一样,我从 request.body 获取值。事情是这样的,这些值可以是未定义的,我需要将这些值传递给我的工厂。
在工厂内部,我有一个函数可以验证值是空值还是未定义。 (和其他一些验证)通过这种方式,我确保不会将未定义或空值传递给我的实例。但由于类型定义,我无法对其进行测试。
请求生成的值可以是未定义的,也可以不是未定义的,但构造函数可以获取该值。当我尝试测试它时,我不能,因为解释器不允许我传递 null 或 udnefined 值(因为类型),例如:
...
const { value } = request.body;
const result = myFactory.create(value);
// This works fine because body can be anything, literaly, even undefined.
//Althought the function is waiting for a number.
...
const nullValue = null;
const result = myFactory.create(nullValue);
// this does not work, because the function want a number and is getting a null value.
// but i need to do this in order to test that case.
...
事情是这样的:我该如何测试呢? 对于函数接收为空或未定义并且因此不创建实例的情况,我无法生成空值。
我应该退出函数验证针对 NullOrUndefined 的代码部分吗?
【问题讨论】:
-
它没有帮助。我需要能够复制一个未定义的值作为参数,其中一个字符串或数字被认为是。可能我的方法不好,我需要从工厂内部取出代码。
-
为什么
// @ts-expect-error const result = myFactory.create(null);不起作用?它允许您传递您的类型通常拒绝的值,即undefined,以便编写测试。 -
天哪!我没意识到。非常感谢。
-
没问题。最好的部分是
// @ts-expect-error标志本身会导致错误,如果您的代码更改为传递像myFactory.create(1)这样的valid 值。所以它非常精确且重构安全。
标签: node.js typescript api testing mocha.js