私は CouchDB 設計ドキュメント ( couchapp.jsを使用して記述) を単体テストしようとしています。例:
var ddoc = {
  _id: '_design/example',
  views: {
    example: {
      map: function(doc) {
        emit(doc.owner.id, contact);
      }
    }
   }
}
module.exports = contacts
次に、このファイルを mocha テストに非常に簡単に要求できます。
問題は、マップ関数が使用するいくつかのグローバル関数 (上記の「emit」関数) を CouchDB が公開していることです。これらの関数は、CouchDB の外部 (つまり、これらの単体テスト) では使用できません。
各テストでグローバル関数を宣言しようとしました。次に例を示します。
var ddoc = require('../example.js')
describe('views', function() {
  describe('example', function() {
    it('should return the id and same doc', function() {
      var doc = {
        owner: {
          id: 'a123456789'
        }
      }
      // Globally-scoped mocks of unavailable couchdb 'emit' function
      emit = function(id, doc) {
        assert.equal(contact.owner.id, id);
        assert.equal(contact, doc);
      }
      ddoc.views.example.map(doc);
    })
  })
})
しかし、Mocha はグローバル リークの苦情で失敗します。
これらすべてが一緒になって「悪臭」を放ち始めたので、Mochaの外であっても、ライブラリを介したより良い/より簡単なアプローチがあるかどうか疑問に思っていますか?
基本的に、アサートを呼び出すことができるテストごとにモック実装を利用できるようにしたいと考えています。
何か案は?