如何使用JestAssert数据类型

30byixjq  于 2023-04-18  发布在  Jest
关注(0)|答案(4)|浏览(115)

我正在使用Jest测试我的Node应用程序。
我是否可以期望/Assert一个值是一个日期对象?
expect(typeof result).toEqual(typeof Date())
是我的尝试,但自然会返回[Object]。所以这也会通过{}。
谢谢!

ma8fv8wu

ma8fv8wu1#

    • 对于新版本> 16.0.0的Jest:**

有一个新的匹配器叫做toBeInstanceOf。你可以使用这个匹配器来比较一个值的示例。

    • 示例:**
expect(result).toBeInstanceOf(Date)
    • 对于版本为< 16.0.0的Jest:**

使用instanceof证明result变量是否是Date Object。

    • 示例:**
expect(result instanceof Date).toBe(true)
    • 常见类型匹配示例:**
    • boolean**
expect(typeof target).toBe("boolean")
    • number**
expect(typeof target).toBe("number")
    • string**
expect(typeof target).toBe("string")
    • array**
expect(Array.isArray(target)).toBe(true)
    • object**
expect(target && typeof target === 'object').toBe(true)
    • null**
expect(target === null).toBe(true)
    • undefined**
expect(target === undefined).toBe(true)
    • function**
expect(typeof target).toBe('function')
    • Promiseasync function**
expect(!!target && typeof target.then === 'function').toBe(true)
    • 另一个匹配其他类型的示例:**
    • float**(* 十进制数,如3.14137.03等 *)
expect(Number(target) === target && target % 1 !== 0).toBe(true)
    • Promiseasync function,返回Error**
await expect(asyncFunction()).rejects.toThrow(errorMessage)
oymdgrw7

oymdgrw72#

Jest支持toBeInstanceOf。请参阅他们的文档,但这里是他们在回答这个问题时的示例:

class A {}

expect(new A()).toBeInstanceOf(A);
expect(() => {}).toBeInstanceOf(Function);
expect(new A()).toBeInstanceOf(Function); // throws
wwodge7n

wwodge7n3#

如果您正在处理JSX,您可以执行以下操作

expect(result.type).toBe(MyComponent);

示例

component = shallow(<MyWidget {...prop} />);

instance = component.instance();
const result = instance.myMethod();

expect(result.type).toBe(MyComponent);

在这个例子中,myMethod()返回MyComponent,我们正在测试它。

dbf7pr2w

dbf7pr2w4#

接受的答案可以工作,但容易出现错别字。特别是对于基本类型

// This won't work. Misspelled 'string'
expect(typeof target).toBe("strng")

我在文档中偶然发现的一种更好的方法,没有明确定义为测试类型的方法,是:

expect(id).toEqual(expect.any(Number))
expect(title).toEqual(expect.any(String))
expect(feature).toEqual(expect.any(Boolean))
expect(date).toEqual(expect.any(Date))

相关问题