Не могу прочитать свойство 'модель' неопределенного - PullRequest
0 голосов
/ 27 января 2019

Это мой выбор в мангустных методах. Любые предложения действительно приветствуются. Mocha жалуется на то, что не может найти мою коллекцию моделей (в моем коде это "this.model ('User' .... line)). Я использую заглушку sinon, чтобы заглушить Модель и имя метода.

Юнит-тестирование схемы (проверка валидаторов) прошло успешно. Я пытаюсь обернуть голову вокруг простого мангуста.

фешенебельный code failure

Метод Мангуста (нижняя часть файла схемы Мангуста):

userSchema.methods.findUser = (cb) => {
this.model('User').findOne({
    lname: this.lname
}, (err, val) => {
    cb(!!val);
});
};
module.exports = mongoose.model('User', userSchema);

Мой тест по этому методу:

it('gets a User', (done) => {
  sinon.stub(User, 'findOne');
  let u = new User({ lname: 'Pickles' });

  u.findUser();

  sinon.assert.calledWith(User.findOne, { lname: 'Pickles' });
  done();
});

1 Ответ

0 голосов
/ 29 января 2019

В своей функции схемы при создании функции findUser вы вызываете this.model ('User'). FindOne .... На данный момент в коде вам еще предстоит сделать UserSchema моделью. Это делается в нижней части файла схемы, куда вы экспортируете модель при ее создании.

Это ваша проблема, потому что вы пытаетесь получить доступ к модели User до ее создания. Но позвольте мне спросить, почему вы пишете эту функцию в вашей модели? Эта функция взаимодействует с моделью, она не помогает определить ее. Я бы порекомендовал создать пользовательский контроллер, импортировать туда модель и также написать эту функцию. Примерно так:

Пользовательский контроллер

const UserModel = require('your-model-here');

function findUser(last, cb) {
  UserModel.findOne({ lname: last }, (err, val) => {
    cb(!!val);
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...