2

私のWebアプリには次の構造があります

デシベル.js:

mongoose = require('mongoose');
db = mongoose.createConnection("...");
playerSchema = new mongoose.Schema({
  // my schema stuff
});
exports.Player = db.model("player", playerSchema);

私はすべてのルートを独自のファイル (route/index.js) に持っています。

db = require('../db');

exports.createPlayer = function(req, res) {
  player = new db.Player();
  player.name = req.body.player_name;
  player.save(function(err) {
    if (err) {
      log(err);
    }
    res.redirect("/");
  });
};

app.js

routes = require('./routes');
app.post("/start", routes.createPlayer);

次の例のように、mocha、should、および supertest を使用してアプリをテストします

should = require('should');
supertest = require('supertest');
app = require('../app');

describe("POST /start", function() {
  it("should redirect", function(done) {
    supertest(app)
    .post("/start")
    .send({
      player_name: "John Wayne"
    }).end(function(err, res) {
      should.not.exist(err);
      done();
    });
  });
});

すべて正常に動作しますが、本番データベースに対してテストしたくありません。テストのためだけにダミー/別のデータベースを使用するスマートな方法を知っている人はいますか? もしかして別の環境を使っている?私はちょっと立ち往生しています!

4

1 に答える 1

3

テスト ファイルに含める最初のファイルである common.js ファイルがあります。上部は次のとおりです。

process.env.NODE_ENV    = 'test'
process.env.MONGOHQ_URL = 'mongodb://localhost/project-testing'

そして、データベース接続を行うと、次のようになります。

var dbUri = process.env.MONGOHQ_URL || 'mongodb://localhost/project'
var db    = mongoose.connect(dbUri)
于 2012-09-20T04:13:51.357 に答える