6

このオブジェクトで使用されているマングースの依存関係をスタブしようとしています:

var Page = function(db) {

    var mongoose = db || require('mongoose');

    if(!this instanceof Page) {
        return new Page(db);
    }

    function save(params) {
        var PageSchema = mongoose.model('Page');

        var pageModel = new PageSchema({
            ...
        });

        pageModel.save();
    }

    Page.prototype.save = save;
}

module.exports = Page;

この質問の答えを使用して、私はこれをやってみました:

mongoose = require 'mongoose'
sinon.stub mongoose.Model, 'save'

しかし、私はエラーが発生しました:

TypeError: 未定義のプロパティを関数として保存しようとしました

私もこれを試しました:

sinon.stub PageSchema.prototype, 'save'

そして、エラーが発生しました:

TypeError: オブジェクトのプロパティをラップする必要があります

誰でもこれを手伝ってもらえますか?私は何を間違っていますか?

4

3 に答える 3

6

mockの代わりにを使用することをお勧めします。これstubにより、メソッドが元のオブジェクトに実際に存在することが確認されます。

var page = new Page();

// If you are using callbacks, use yields so your callback will be called
sinon.mock(page)
  .expects('save')
  .yields(someError, someResult);

// If you are using Promises, use 'resolves' (using sinon-as-promised npm) 
sinon.mock(page)
  .expects('save')
  .resolves(someResult);

sinon-mongoose を見てください。チェーンされたメソッド (Mongoose モデルとドキュメントの両方) を数行で期待できます (リポジトリに実用的な例があります)。

于 2015-11-13T16:26:26.313 に答える