首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mockgoose:如何在mongoose中模拟错误?

Mockgoose:如何在mongoose中模拟错误?
EN

Stack Overflow用户
提问于 2016-07-11 21:42:40
回答 0查看 924关注 0票数 3

我正在尝试做一个mongoose驱动的应用程序的单元测试。虽然mockgoose在模拟mongoose方面做了很好的工作,以便我可以围绕它进行测试,但我没有找到一种方法来推动它使调用失败,所以我可以测试错误处理逻辑。

这是一个受支持的用例吗?或者我应该找到另一个框架?

代码:

代码语言:javascript
复制
var mongoose = require('mongoose');

var Test = {},
    Doc = require('./model/Doc.js');

var dbURL = 'mongodb://127.0.0.1/',
    dbName = 'Test';

function connect(callback) {
    Test = mongoose.createConnection(dbURL + dbName); //<-- Push this to fail
    Test.on('error', (err) => {
        callback(err);
    });
    Test.once('open', function () {
        callback();
    }); 
}

测试:

代码语言:javascript
复制
var chai = require('chai'),
    expect = chai.expect,
    util = require('util');

var config = require('./config.json');

var proxyquire =  require('proxyquire').noPreserveCache();
var sinon = require('sinon');
var mongoose = require('mongoose');
var mockgoose = require('mockgoose');

describe('test', () => {
    describe('Connect', () => {
        beforeEach((callback) => {
            mockgoose(mongoose).then(() => {
                callback();
            });
        });

        it('Expect to connect to the database', (done) => {
            var stub = {
                    mongoose: mongoose
                },
                test = proxyquire('./../test.js', {
                    'mongoose': stub.mongoose
                });

            test.connect((err) => {
                try {
                    expect(err).to.not.be.ok;
                    done();
                } catch(err) {
                    done(err);
                }
            });

        it('Expect to throw error when failing to connect to the database', (done) => {
            var stub = {
                    mongoose: mongoose
                },
                medical = proxyquire('./../medical.js', {
                    'mongoose': stub.mongoose
                });

            medical.connect((err) => {
                try {
                    expect(err).to.be.ok;
                    done();
                } catch(err) {
                    done(err);
                }
            });
        });
    });
});

结果是:

代码语言:javascript
复制
Connect
      ✓ Expect to connect to the database
      1) Expect to throw error when failing to connect to the database


  1 passing (234ms)
  1 failing

  1) Medical Connect Expect to throw error when failing to connect to the database:
     AssertionError: expected undefined to be truthy
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38308535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档