2015-02-24 37 views
0

假设你有一个返回包含预编程功能的目标代码存根,您可以用这样的:返回存根

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被称为用正确的参数,除了验证返回后功能被称为正确的论点。我需要一个存根返回一个存根:

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

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

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

+0

关于设计模式,也许你正在考虑[Curried Functions](http://www.crockford.com/javascript/www_svendtofte_com/code/curried_javascript/index.html)? – 2015-02-24 20:30:20

回答

0

既然没有人回答,我工作围绕这个是这样的:

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

但我想知道如果有一个更优雅的解决方案莫过于此。