Я пытаюсь реализовать некоторые интеграционные тесты, используя mocha для функций, которые взаимодействуют с базой данных postgres через knex, в экспресс-приложении nodejs.Функции работают вне mocha - я могу запустить приложение на узле или nodemon, отправлять запросы через Postman, извлекать записи из базы данных, добавлять новые записи и т. Д. Но когда я пытаюсь проверить код с помощью mocha, я получаю ошибки, подобныеследующие для любых функций, которые пытаются получить доступ к базе данных:
select * from "item" where "user_id" = $1 - relation "item" does not exist
Переменная среды для подключения к базе данных настроена для подключения к нужной базе данных;когда я вручную тестирую приложение, все работает;Я получаю данные из базы данных.
Я включил нижеприведенные фрагменты кода: тестовый скрипт для одного из тестов, который не будет работать, функция, которую я пытаюсь протестироватьи модули, на которые эта функция опирается.
ТЕСТОВЫЙ СКРИПТ
const Item = require('../db/item');
const chai = require('chai');
const chaiAsPromised = require('chai-as-promised');
// set up the middleware
chai.use(chaiAsPromised);
var should = require('chai').should()
describe('Item.getByUser', function() {
contex`enter code here`t('With valid id', function() {
const item_id = 1;
const expectedResult = "Canoe";
it('should return items', function() {
return Item
.getByUser(item_id)
.then(items => {
items[0].name.should.equal(expectedResult);
});
});
});
SNIPPET ИЗ ФУНКЦИИ ITEM.GETBYUSER:
const knex = require('./connection');
module.exports = {
getByUser: function(id) {
return knex('item').where('user_id', id);
},
SNIPPET ИЗ МОДУЛЯ СОЕДИНЕНИЯ:
require('dotenv-safe').config();
const environment = process.env.NODE_ENV || 'development';
const config = require('../knexfile')[environment];
module.exports = require('knex')(config);
SNIPPET ИЗ МОДУЛЯ KNEXFILE:
module.exports = {
development: {
client: 'pg',
connection: process.env.DATABASE_URL
},
production: {
client: 'pg',
connection: process.env.DATABASE_URL
}
};
Сообщение об ошибке, которое я получаю для вышеупомянутого теста:
1) Item.getByUser
With valid id
should return items:
select * from "item" where "user_id" = $1 - relation "item" does not exist
error: relation "item" does not exist
at Connection.parseE (node_modules\pg\lib\connection.js:567:11)
at Connection.parseMessage (node_modules\pg\lib\connection.js:391:17)
at Socket.<anonymous> (node_modules\pg\lib\connection.js:129:22)
at addChunk (_stream_readable.js:284:12)
at readableAddChunk (_stream_readable.js:265:11)
at Socket.Readable.push (_stream_readable.js:220:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)