2015-12-08 4 views
2

Я разрабатываю веб-приложение с Strongloop, которое будет работать на Bluemix (служба облачной платформы).Тестирование Strongloop RESTapi с тестовой базой данных

Моя проблема в том, что когда я тестирую, мне бы хотелось, чтобы тесты выполнялись с другой базой данных, а не с базой данных.

У меня есть два вопроса относительно того, как сделать это:

  1. Были/Как настроить, что конкретная база данных должна быть использована при выполнении тестов? Я хочу иметь возможность запускать тест, когда я развертываю на Bluemix в рамках развертывания. Поэтому, если я не ошибаюсь, этого недостаточно, если я могу вручную с некоторым параметром установить, какая база данных будет работать, когда я делаю «узел»?

  2. Кроме того, в моем server.js я делаю это, чтобы синхронизировать свою базу данных с моей DataModel:

    var appModels = ['User']; 
    var ds = app.dataSources.eventSeedElephantSQLDb; 
    ds.isActual(appModels, function(err, actual) { 
    if (!actual) { 
    ds.autoupdate(appModels, function(err) { 
    if (err) throw (err); 
    }); 
    } 
    }); 
    

Когда я бегу тест я хотел бы запустить что-то подобное, но вместо этого я бы как мигрировать.

В тесте я использую мокко, chai и chaiHttp.

ответ

2

Вы можете создать «конфигурацию, специфичную для среды» для тестов. Смотри: https://docs.strongloop.com/display/public/LB/Environment-specific+configuration

Например создать другой файл конфигурации datasources.json, но с именем datasources.test.json

{ 
    "my-test-database": { 
    "host": "localhost", 
    "port": 27017, 
    "database": "my-test-database", 
    "connector": "mongodb" 
    } 
} 

и в тестовой первой линии, можно определить окружающую среду для

process.env.NODE_ENV = 'test'; 

//here I clean and create the data that I need, but you can use your database data 
beforeEach(function(done) { 
    app.models['City'].destroyAll(); 
    app.models['City'].create({name: 'city test', country: 'Brazil'}); 
}); 

describe('/city', function() {  
    it('should find a city', function(done) { 
    request(app).get('/api/city').expect(200); 
    }); 
}); 
Смежные вопросы