无法让间谍测试正常工作 - 角度



由于某种原因,我无法让我的测试工作,它不断抛出错误:

对 isCurrentStatus 的预期监视等于 true。

被调用的函数只是评估传入的变量是否等于当前持有的status属性,并返回 true 或 false。没什么大不了的...

测试

it('should return true if current status = status passed in', () => {
const statusSpy = spyOn(component, 'isCurrentStatus');
component.event = failedEvent;
component.isCurrentStatus('failed');
expect(statusSpy).toEqual(true);
})

元件

event: MyEvent;
isCurrentStatus(status: string): boolean {
return this.event.status === status;
}

更新

我刚刚将spyOn移到beforeEach()部分,现在返回:

预期undefined等于true

您可以在函数上创建一个 spyOn 并检查它返回的不同值:

spyOn(component, 'isCurrentStatus').and.callThrough();
component.event = failedEvent;
const statusResult = component.isCurrentStatus('failed');
expect(statusResult).toBeTruthy();
Expected spy on isCurrentStatus to equal true.

spyOn因为它实际上创建了一个spy。你像expect(Spy).toEqual(Boolean);一样尝试 smth,所以你会得到这样的错误。

expected undefined to equal true- 你得到beforeEach()因为 的 作用域不在你的测试函数 (it()( 作用域中

由于您要测试返回的值 - 您无需在此处监视。只需调用函数并检查其结果。

当您需要测试而不是返回值而是其他东西时,需要间谍 - 例如,它是注入依赖项的函数,但您需要确信它被调用了。所以,你创建了一个间谍。或者:您需要检查调用了多少次函数,传递了哪些参数等。或者当你需要嘲笑它的行为时。

尝试这样做来测试返回的值

expect(component.isCurrentStatus('failed')).toEqual(true);

您可以检查是否调用了该方法

const statusSpy = spyOn(component, 'isCurrentStatus').and.callThrough();
...
expect(statusSpy).toHaveBeenCalledTimes(1);

您可以检查参数

expect(statusSpy).toHaveBeenCalledWith('failed')

相关内容

  • 没有找到相关文章

最新更新