一个存根 returns 一个存根

A stub that returns a stub

假设您的代码 return 是一个包含预编程函数的对象,您可以像这样使用它:

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 对其进行单元测试?

要直接什么函数returns,需要用到stub:

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

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

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

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

奖励问题:这个设计模式的名称是什么(return使用预编程行为的函数)?以前看过,不知道叫什么名字

因为没有人回答,所以我解决了这个问题:

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

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