【发布时间】:2019-01-12 07:04:31
【问题描述】:
我正在使用 Jest 进行单元测试,并且我想测试变量是否为对象。有更好的方法吗?
it('should throw an Error if options is not an Object', () => {
const error = 'Options should be an Object.'
expect(() => new Foo([])).toThrow(error)
expect(() => new Foo(123)).toThrow(error)
expect(() => new Foo('')).toThrow(error)
expect(() => new Foo(true)).toThrow(error)
expect(() => new Foo(NaN)).toThrow(error)
expect(() => new Foo(null)).toThrow(error)
expect(() => new Foo(() => {})).toThrow(error)
})
【问题讨论】:
-
您不是在测试变量是否是对象,而是在测试构造函数是否可以接收除对象之外的任何内容。我不知道这样做的任何更短的方法,但我会添加一个测试并希望它不会在对象 is 通过时抛出
-
你可以用 Jasmine 做到这一点。
expect(foo).to.be.a('object')或assert.typeOf(foo, 'object')
标签: javascript unit-testing testing ecmascript-6 jestjs