Node.js 使用测试数据库测试Strongloop RESTapi

Node.js 使用测试数据库测试Strongloop RESTapi,node.js,mocha.js,ibm-cloud,loopbackjs,strongloop,Node.js,Mocha.js,Ibm Cloud,Loopbackjs,Strongloop,我正在使用Strongloop开发一个web应用程序,该应用程序将在Bluemix(云平台服务)上运行 我的问题是,当我进行测试时,我希望测试针对另一个数据库运行,而不是内存数据库 关于如何做到这一点,我有两个问题: 我是否/如何配置在运行测试时应该使用的特定数据库?我希望在作为部署的一部分部署到Bluemix上时能够运行测试。所以,若我并没有错的话,若我可以手动设置一些参数,那个么当我在做一个“节点”时,数据库将运行什么,这是不够的 同样在my server.js中,我这样做是为了根据我的数据

我正在使用Strongloop开发一个web应用程序,该应用程序将在Bluemix(云平台服务)上运行

我的问题是,当我进行测试时,我希望测试针对另一个数据库运行,而不是内存数据库

关于如何做到这一点,我有两个问题:

  • 我是否/如何配置在运行测试时应该使用的特定数据库?我希望在作为部署的一部分部署到Bluemix上时能够运行测试。所以,若我并没有错的话,若我可以手动设置一些参数,那个么当我在做一个“节点”时,数据库将运行什么,这是不够的

  • 同样在my server.js中,我这样做是为了根据我的数据模型同步我的数据库:

    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);
    });
    }
    });
    
  • 当我运行测试时,我想运行类似的东西,但我想迁移


    在测试中,我使用mocha、chai和chaiHttp。

    您可以为测试创建“特定于环境的配置”。 看:

    例如,您创建了另一个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);
      });
    });