2016-03-23 3 views
3

Я пытаюсь проверить функцию в контейнере redux, но проблема почти не связана с редукцией или не реагирует. В основном функция fetchData, которую я пытаюсь проверить, выполняет две функции в качестве параметров и вызывает их.Анонимный заглушка Sinon прошел как параметр

То, что я надеялся, что нужно было сделать два анонимных окурки и передать их функции таким образом:

var firstStub = sinon.stub().withArgs(mockResponse).returns('success'); 
var secondStub = sinon.stub().withArgs(mockResponse).returns('success'); 
AccountApp.fetchData({ firstStub , secondStub }); 

Когда это происходит, моя функция fetchData жалуется на firstStub и secondStub не является функцией. Я знаю, что они являются заглушками, но если это так, то каков правильный способ управления этой ситуацией.

+2

Я немного удивлен увидеть аргумент '{firstStub, secondStub}' - то есть вы передаете объект '{firstStub: firstStub, secondStub: secondStub} '- вы действительно хотите это сделать? – Nicole

+0

Да, я тоже был немного удивлен этим, честно говоря, я понятия не имею, почему кто-то это сделал. Считаете ли вы, что это может быть источником проблемы? – ralzaul

+0

хорошо кажется, что это проблема, теперь она работает нормально, но не знаю почему? – ralzaul

ответ

1

Передача окурки в

AccountApp.fetchData({ firstStub , secondStub }); 

, кажется, преступник, потому что это означает, что вы на самом деле (после ES6 desugaring) вызвать это:

AccountApp.fetchData({ firstStub: firstStub, secondStub: secondStub }); 

и это означает, что ваш fetchData() функция должна иметь такую ​​реализацию, как эта:

function(args) { 
    // .... 
    args.firstStub(params); 
    args.secondStub(params); 
    // ... 
}; 

Я серьезно сомневаюсь, что ваш производственный код относится к тем обратным вызовам как «заглушки». Таким образом, вы, вероятно, хотите, чтобы вызвать функцию следующим образом:

AccountApp.fetchData(firstStub, secondStub);