Я тоже пошел искать ответы и оказался здесь.Вот что я сделал:
Я начал с использования mockery , чтобы смоделировать модуль, в котором находились мои модели. Затем я создал свой собственный модуль mock, в котором каждая модель свисала с него как свойство,Эти свойства обертывают реальные модели (поэтому для тестируемого кода существуют дочерние свойства).И затем я переопределяю методы, которыми я хочу манипулировать для теста, например, сохранить.Это имело преимущество в том, что издевательство позволяло отменить насмешку.
, но ...
Меня не особо волнует отмена насмешки, чтобы написать свойства оболочки для каждой модели.Так что теперь мне просто нужен мой модуль и переопределить функции, которыми я хочу манипулировать.Вероятно, я буду запускать тесты в отдельных процессах, если это станет проблемой.
В части аранжировки моих тестов:
// mock out database saves
var db = require("../../schema");
db.Model1.prototype.save = function(callback) {
console.log("in the mock");
callback();
};
db.Model2.prototype.save = function(callback) {
console.log("in the mock");
callback("mock staged an error for testing purposes");
};