2015-02-24 2 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, чтобы убедиться, что были приняты правильные аргументы, в этом случае?

Бонус Вопрос: Как называется этот шаблон дизайна (возврат функции с запрограммированным поведением)? Я видел его раньше, но не знаю его имени.

+0

Что касается шаблона дизайна, возможно, вы думаете о [Curried Functions] (http://www.crockford.com/javascript/www_svendtofte_com/code/curried_javascript/index.html)? –

ответ

0

Поскольку никто не ответил, я работал вокруг этого, как это:

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

Но мне интересно знать, если есть более элегантное решение, чем это.

Смежные вопросы