我正在使用Jest测试我的Node应用程序。我是否可以期望/Assert一个值是一个日期对象?expect(typeof result).toEqual(typeof Date())是我的尝试,但自然会返回[Object]。所以这也会通过{}。谢谢!
expect(typeof result).toEqual(typeof Date())
ma8fv8wu1#
> 16.0.0
有一个新的匹配器叫做toBeInstanceOf。你可以使用这个匹配器来比较一个值的示例。
toBeInstanceOf
expect(result).toBeInstanceOf(Date)
< 16.0.0
使用instanceof证明result变量是否是Date Object。
instanceof
result
Date
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')
Promise
async function
expect(!!target && typeof target.then === 'function').toBe(true)
float
3.14
137.03
expect(Number(target) === target && target % 1 !== 0).toBe(true)
Error
await expect(asyncFunction()).rejects.toThrow(errorMessage)
oymdgrw72#
Jest支持toBeInstanceOf。请参阅他们的文档,但这里是他们在回答这个问题时的示例:
class A {} expect(new A()).toBeInstanceOf(A); expect(() => {}).toBeInstanceOf(Function); expect(new A()).toBeInstanceOf(Function); // throws
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,我们正在测试它。
myMethod()
MyComponent
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))
4条答案
按热度按时间ma8fv8wu1#
> 16.0.0
的Jest:**有一个新的匹配器叫做
toBeInstanceOf
。你可以使用这个匹配器来比较一个值的示例。< 16.0.0
的Jest:**使用
instanceof
证明result
变量是否是Date
Object。boolean
**number
**string
**array
**object
**null
**undefined
**function
**Promise
或async function
**float
**(* 十进制数,如3.14
、137.03
等 *)Promise
或async function
,返回Error
**oymdgrw72#
Jest支持
toBeInstanceOf
。请参阅他们的文档,但这里是他们在回答这个问题时的示例:wwodge7n3#
如果您正在处理JSX,您可以执行以下操作
示例:
在这个例子中,
myMethod()
返回MyComponent
,我们正在测试它。dbf7pr2w4#
接受的答案可以工作,但容易出现错别字。特别是对于基本类型
我在文档中偶然发现的一种更好的方法,没有明确定义为测试类型的方法,是: