我正在做expect(ClassUnderTest.someMethod(withSomeParams)).toThrow()
我正在接受: -
Error: <toThrow> : Actual is not a Function
Usage: expect(function() {<expectation>}).toThrow(<ErrorConstructor>, <message>)
我不明白用法示例。
我试过expect(() => ClassUnderTest.someMethod(withSomeParams)).toThrow()
我得到Expected function to throw an exception.
。并尝试: -
ClassUnderTest.someMethod(withSomeParams)
.subscribe( res => res,
err => console.log(err))
我得到了Error: 1 periodic timer(s) still in the queue.
我不明白如何在抛出错误时写下这个期望。
答案 0 :(得分:1)
您需要将函数本身传递给expect
。你拥有它的方式,你已经传递了ClassUnderTest.someMethod(withSomeParams)
的结果。
您实际上是在expect(() => ClassUnderTest.someMethod(withSomeParams)).toThrow()
中正确执行此操作。该错误可能是由于实现中的实际错误,也可能是因为this
绑定了箭头函数。
要解决此问题,您可以尝试:
expect(function () { ClassUnderTest.someMethod(withSomeParams) };).toThrow()
或:
expect(ClassUnderTest.someMethod.bind(null, withSomeParams)).toThrow()
请参阅this StackOverflow post中的Jasmine docs和.toThrow
部分。