2

私はまだ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();
    });
  });
});

私は少し混乱しています。どうもありがとう。

4

1 に答える 1