J'essaie de mettre fin à la dépendance de la mangouste utilisée dans cet objet: à l'aide de la réponse pour Cette question , j'ai essayé de faire cela: p> mais j'ai eu l'erreur: p> J'ai également essayé ceci: p> et je obtenu l'erreur: p> Quelqu'un peut-il aider avec cela? Qu'est-ce que je fais mal? P> p>
3 Réponses :
J'ai analysé la source de mangouste et je ne pense pas que cela soit possible. La fonction de sauvegarde n'est pas définie sur le modèle, mais générée dynamiquement par hameçonne le NPM qui permet Middleware Middleware
fonctionnalité.
Toutefois, vous pouvez enregistrer en instance comme ceci: P>
mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); mongoose.set('debug', true); schema = new mongoose.Schema({title: String}); mongoose.model('Page', schema); var Page = function(db) { var mongoose = db || require('mongoose'); if(!this instanceof Page) { return new Page(db); } var PageSchema = mongoose.model('Page'); this.pageModel = new PageSchema(); function save(params, cb) { console.log("page.save"); this.pageModel.set(params); this.pageModel.save(function (err, product) { console.log("pageModel.save"); cb(err, product); }); } Page.prototype.save = save; }; page = new Page(); sinon = require('sinon'); sinon.stub(page.pageModel, 'save', function(cb){ cb("fake error", null); }); page.save({ title: 'awesome' }, function (err, product) { if(err) return console.log("ERROR:", err); console.log("DONE"); });
J'ai essayé de faire cela, mais je reçois une erreur disant que: l'objet Enregistrer n'a pas de méthode 'Save'. J'ai appelé mongoose.model ('Page'), créé et instantané de cela, puis je l'empêche.
Hmm .. Essayez-vous de sculpter le pagemodel.save code>?
Tout ce que je veux, c'est éviter d'aller à la base de données. Peu importe comment. D'abord j'ai essayé de supporter de mongoose.model. Maintenant j'essaie de supporter pagemodel.save
Je n'aime vraiment pas exposer les pageschema, mais cette façon fonctionne.
Je vous recommande d'utiliser Mock code> au lieu de
Stub code>, qui vérifiera que la méthode existe vraiment sur l'objet d'origine.
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);
En espérant que je me souvienne de donner à cela un vote demain. Quel paquet moqueur génial. M'a sauvé beaucoup de douleur.
Merci@rududverhoef :)
sinon.stub(page, 'save').callsFake(function(cb){ // do your Fake code cb(null) })
J'ai le même problème..