gpt4 book ai didi

javascript - 如何使用 Jasmine 监视值属性(而不是方法)

转载 作者:IT王子 更新时间:2023-10-29 02:44:33 26 4
gpt4 key购买 nike

Jasmine 的 spyOn 可以很好地改变方法的行为,但是有没有办法改变对象的值属性(而不是方法)?代码可能如下所示:

spyOn(myObj, 'valueA').andReturn(1);
expect(myObj.valueA).toBe(1);

最佳答案

2017 年 2 月,他们合并了一个添加此功能的 PR,他们于 2017 年 4 月发布。

所以要监视你使用的 getters/setters:const spy = spyOnProperty(myObj, 'myGetterName', 'get');其中 myObj 是您的实例,“myGetterName”是您的类中定义为 get myGetterName() {} 的名称,第三个参数是类型 get设置

您可以使用与通过 spyOn 创建的 spy 相同的断言。

例如,您可以:

const spy = spyOnProperty(myObj, 'myGetterName', 'get'); // to stub and return nothing. Just spy and stub.
const spy = spyOnProperty(myObj, 'myGetterName', 'get').and.returnValue(1); // to stub and return 1 or any value as needed.
const spy = spyOnProperty(myObj, 'myGetterName', 'get').and.callThrough(); // Call the real thing.

如果您有兴趣,可以在 github 源代码中找到此方法。

https://github.com/jasmine/jasmine/blob/7f8f2b5e7a7af70d7f6b629331eb6fe0a7cb9279/src/core/requireInterface.js#L199

spyOnProperty 方法是 here

回答最初的问题,使用 jasmine 2.6.1,您会:

const spy = spyOnProperty(myObj, 'valueA', 'get').andReturn(1);
expect(myObj.valueA).toBe(1);
expect(spy).toHaveBeenCalled();

关于javascript - 如何使用 Jasmine 监视值属性(而不是方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20879990/

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