gpt4 book ai didi

Angular 4 Jasmine Actual 不是函数

转载 作者:行者123 更新时间:2023-11-28 19:59:02 24 4
gpt4 key购买 nike

我在做 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.

我不明白如何写这个抛出错误的期望。

最佳答案

您需要将函数本身 传递给expect。按照您的方式,您正在传递 ClassUnderTest.someMethod(withSomeParams)结果

您实际上在 expect(() => ClassUnderTest.someMethod(withSomeParams)).toThrow() 中正确地执行了它。该错误要么是由于您的实现中的实际错误,要么是因为 this 与箭头函数绑定(bind)。

要解决这个问题,您可以尝试:

expect(function () { ClassUnderTest.someMethod(withSomeParams) };).toThrow()

或:

expect(ClassUnderTest.someMethod.bind(null, withSomeParams)).toThrow()

参见 this StackOverflow postJasmine docs 中的 .toThrow 部分.

关于Angular 4 Jasmine Actual 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com