首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用Sinon.JS和重新连接时,是否可以设置“the”的值?

在使用Sinon.JS和重新连接时,是否可以设置“the”的值?
EN

Stack Overflow用户
提问于 2016-03-01 09:33:45
回答 1查看 196关注 0票数 0

背景

如果我有以下模块:

代码语言:javascript
运行
复制
this_module: {

    foo: {};

    set_this_foo: function () {

        this.foo.boo = 'something';
        return this.foo;
    }
}

并使用重丝导入私有函数,然后使用Sinon.js对该函数进行单元测试。

代码语言:javascript
运行
复制
var set_this_foo = app.__get__('this_module.set_this_foo');
var spy = sinon.spy(set_this_foo);

spy();

expect(spy).to.have.returned({boo: 'something'});

我得到了错误消息:

TypeError:无法设置未定义的属性“boo”

因为this最终具有全局对象的值。在运行测试之前,我可以通过定义一个名为foo的全局变量来解决这个问题,但是不希望污染全局命名空间。

问题

是否有一种(优雅的)方法来定义this相对于spy()的值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-01 10:25:46

我会采取一些不同的做法:

代码语言:javascript
运行
复制
var myModule = app.__get__('this_module');
var spy      = sinon.spy(myModule, 'set_this_foo');

myModule.set_this_foo();

expect(spy).to.have.returned({ boo : 'something' });

因为您也可以通过使用原始的方法名(除了spy)来引用间谍,所以调用它将确保在正确的上下文中调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35719172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档