当前位置: 首页 > 知识库问答 >
问题:

西农间谍不会被叫

谭宜
2023-03-14

测试在第一个期望上失败了。有没有办法向函数注入间谍,这样我就可以检查函数是否用正确的参数调用?

            var myObj = {}
            myObj.prop = function propFn () {
                return 'foo'
            }

            myObj.func = function (disp) {
                return disp(this.prop())
            }

            let disp = sinon.spy()
            sinon.stub(myObj, 'prop').callsFake(function fakeFn () {
                return 'bar'
            })

            expect(disp.called).to.be.true
            disp.should.have.been.calledWith('bar')

谢谢

共有1个答案

公羊绪
2023-03-14

请按以下方式尝试,

describe('prop', () => {
  const myObj = {};
  myObj.prop = function propFn() {
    return 'foo';
  };

  myObj.func = function (disp) {
    return disp(this.prop());
  };
  it('should be called', () => {
    sinon.stub(myObj, 'prop').returns('bar');
    const disp = sinon.spy();
    myObj.func(disp);
    expect(disp.callCount).to.equal(1);
    expect(myObj.prop.callCount).to.equal(1);
    expect(disp.callCount).to.equal(1);
    expect(disp.calledWith('bar')).to.equal(true);
  });
});

结果

道具

✓应该被称为

1次传球(975ms)

 类似资料:
  • 这是我的密码。我想测试“doing”方法并验证 移动到外部。它可以被称为。 我该如何处理这个问题??谢谢~

  • 所以我有一个调用https请求的方法。我已经成功地在其他测试中中断了调用,但是这个测试打败了我,因为它根本不起作用。 在我的beforeach中,我创建存根,在我的afterEach中,我执行存根还原 在测试中,我创建了四个存根调用。

  • 11.8 总共三天,我是第一天 我这组的第一个面试官好像对我的论文比较感兴趣,问了一些论文方面的问题。 第二个面试官问了数据库隔离级别和线程同步方式。 第三个面试官问了前端的一些问题(简历写了,但是真不熟,大家简历上写的一定都是熟悉的)。 边框标签,内边框外边框,怎么内嵌一个网页。 基本没回答上来,我说我前端不是很熟,面试官说没关系,感觉面试官都挺耐心,态度很好。 每个人十分钟,有的组好像二十分钟

  • 问题内容: 我有内部类的课程,如下所示: 模仿测试如下所示:build.gradle: 测试: 第一次测试正在按预期方式工作。第二个永远不会被检测为“已调用”,尽管在日志中我看到的是。有什么问题吗?:) 谢谢! 问题答案: 怎么了? 好吧,这里的问题非常微妙,当您调用时,会在实例背后创建某种装饰器,以允许监视实例上的所有方法调用。因此,您可以检查给定方法被调用了多少次, 但是在装饰器 上 却 没有

  • 我很难找到sinon间谍没有被触发的原因。在下面的测试中,两个控制台语句都报告为false,因此两个方法都没有被调用(以防出现错误)。 这是我的一个摩卡测试通常的样子: }); PostOnToller中的方法: 最后是PostModel中的方法: 如果我以正常的方式调用方法,它们会执行查找,返回预期的Posts数组。但是,不会执行间谍。另外,如果我将控制器类中的方法更改为 间谍函数(res)确实

  • 我正在为Angular7模板中的函数编写单元测试用例。它是一个登录组件,登录功能在http请求中具有router.navigate,以便在正确登录时路由到仪表板。但是我得到了错误 - 错误:应使用[['/ProjectData/MasterSequence']]调用spy navigate,但从未调用过。堆叠(http://localhost:9876/absolute/home/hp/Downl