次の例では、 stubget
関数を使用して、実際のHTTP要求が発生しないようにしています。 spy onget
メソッドを呼び出して、どの引数で呼び出されたかを確認したい。
var request = require('request'), sinon = require('sinon');
describe('my-lib', function() {
sinon.stub(request, 'get').yield(null, null, "{}");
var spy = sinon.spy(request, 'get');
it('should GET some data', function(done) {
function_under_test(function(err, response) {
if(error) return done(error);
assert(request.get.called);
assert(request.get.calledWith('some', 'expected', 'args'));
});
});
});
しかし、シノンは同じ方法をスパイしたりスタブしたりすることを許可していないようです。上記の例では、次のエラーが発生します。
TypeError: Attempted to wrap get which is already wrapped
デフォルトの動作を防止しながら、メソッドをスパイするにはどうすればよいですか?
スタブは、スパイのすべてのメソッドをサポートします。スパイを作成しないでください。