私はまだnode、js、sinon、proxyquireなどを非常に学んでいます。
google-geocode モジュール ( https://github.com/bigmountainideas/google-geocoder ) を使用するモジュールがあり、それをスタブするためのテストを書くのに苦労しています。
これはすべて、あなたがどのように設定したかだと思います。time.js では、google-geocoder のドキュメントに従って次のようにします。
var geocoder = require('google-geocoder');
...
module.exports = function(args, callback) {
var geo = geocoder({ key: some-thing });
geo.find('new york', function(err, response) { ... });
}
次のようにテストしようとしていますが、エラーが発生します。
TypeError: geo.find is not a function
at run (cmdsUser/time.js:x:x)
at Context.<anonymous> (tests/cmdsUser/time-test.js:x:x)
時間-test.js:
var time;
var findStub;
before(function () {
findStub = sinon.stub()
time = proxyquire('./../../cmdsUser/time',{ 'google-geocoder': { find: findStub } } );
});
describe('Demo test', function() {
it('Test 1', function(done){
findStub.withArgs('gobbledegook').yields(null, { this-is: { an-example: 'invalid' } });
time(['gobbledegook'], function(err, response) {
expect(response).to.equals('No result for gobbledegook');
done();
});
});
});
私は少し混乱しています。どうもありがとう。