【问题标题】:A stub that returns a stub返回存根的存根
【发布时间】:2015-02-24 20:14:51
【问题描述】:

假设您的代码返回包含预编程函数的对象,您可以这样使用:

someFunction(/* pass in data */)
  .post(/* some data */)  //Returned post function is pre-programmed to send a POST request to the right URL
  .then(function() {
    //do something
  });

如何使用sinon.js对此进行单元测试?

要指示函数返回的内容,您需要使用存根:

var mockService = sinon.stub();
mockService.returns(/* some return value */);

但是假设我想验证 someFunction 是否使用正确的参数调用,此外还要验证返回的 post 函数是否使用正确的参数调用。我需要一个存根来返回一个存根:

mockService.returns({
  post: sinon.stub()
});

在这种情况下,我如何访问mockService.post 来验证是否传递了正确的参数?

额外问题:这种设计模式的名称是什么(返回具有预编程行为的函数)?我以前见过它,但不知道它的名字。

【问题讨论】:

标签: javascript unit-testing sinon


【解决方案1】:

由于没有人回答,我就这样解决了这个问题:

var mockServicePost = sinon.stub();
var mockService = sinon.stub();
mockService.returns({
  post: mockServicePost
});

但我很想知道是否有比这更优雅的解决方案。

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2019-01-15
    • 2020-05-23
    相关资源
    最近更新 更多