TypeError: ожидается, что заглушка даст результат, но обратный вызов не был возвращен из модульного теста - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь написать модульный тест, который должен выполнить интеграционный тест между конечной точкой REST и принадлежащим ей контроллером. Тест должен смоделировать вызов к базе данных, поэтому соединение с базой данных во время тестирования не устанавливается.

Я использую chai-http, чтобы сделать HTTP-вызов к конечной точке, и sinon с sinon-mongoose, чтобы высмеивать вызовы моделей Mongoose. .

const set = [{ _id: 1 }, { _id: 2 }, { _id: 3 }];

//Require the dev-dependencies
const sinon = require('sinon');
const { describe, it } = require('mocha');
require('sinon-mongoose');
const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../src/server');

const should = chai.should();

// set up mocks
const MyModel = require('../src/models/myModel');

const MyModelMock = sinon.mock(MyModel);
MyModelMock.expects('find').yields(set);

chai.use(chaiHttp);

describe('My endpoints', () => {
  describe('/GET to my endpoint', () => {
    it('it should GET all the info I want', (done) => {
      chai.request(server)
        .get('/api/myEndpoint')
        .end((err, res) => {
          res.should.have.status(200);
          done();
        });
    });
  });
});

Поиск этой ошибки не дал результатов, с которыми я могу работать. Что я тут не так делаю?

1 Ответ

0 голосов
/ 08 ноября 2019

На случай, если кто-нибудь столкнется с этим (скорее всего, со мной).

Мне удалось решить мою проблему. Я использовал обещания в своем коде и должен был соответствующим образом настроить макет (также правильно соединяясь).

MyModelMock.expects('find').chain('where').chain('in').chain('exec').resolves(set);
...