返回存根的存根

时间:2015-02-24 20:14:52

标签: javascript unit-testing sinon

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

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以验证是否传递了正确的参数?

奖金问题:此设计模式的名称是什么(返回具有预编程行为的功能)?我以前见过它,但不知道它的名字。

1 个答案:

答案 0 :(得分:0)

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

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

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