标签: mockgoose

jest mockgoose - 在测试运行完成后,jest没有退出一秒钟

我有一个猫鼬模型:

var mongoose = require("mongoose");

var transactionSchema = mongoose.Schema({
  category: { type: String, required: [true, "Category is required."] },
  amount: Number,
  comment: String,
  tags: Array,
  currency: String
});

var Transaction = mongoose.model("Transaction", transactionSchema);

module.exports = Transaction;
Run Code Online (Sandbox Code Playgroud)

并使用mockgoose和进行简单的单元测试jest:

var { Mockgoose } = require("mockgoose");
var mongoose = require("mongoose");
var Transaction = require("./transaction");

var mockgoose = new Mockgoose(mongoose);

describe("transaction", function() {
  afterEach(function() {
    mockgoose.helper.reset().then(() => {
      done();
    });
  });

  it("category is required", function() {
    mockgoose.prepareStorage().then(() => {
      mongoose.connect("mongodb://foobar/baz"); …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js jestjs mockgoose

5
推荐指数
1
解决办法
7761
查看次数

使用Mockgoose时保存并创建悬挂

我正在尝试使用Mockgoose进行测试.每当我打电话.save.create模特时,承诺都无法解决.我能够使用.find并且.findOne没有任何问题.我不确定我是否设置了错误的东西,或者我是否误解了应该如何使用Mockgoose.

我的测试设置为:

测试/ mockgoose.js

const mongoose = require('mongoose');
const { Mockgoose } = require('mockgoose');

const mockgoose = new Mockgoose(mongoose);

mockgoose.helper.setDbVersion('3.2.1');
mongoose.Promise = global.Promise;

module.exports = {
    mockgoose,
    mongoose
};
Run Code Online (Sandbox Code Playgroud)

model.test.js

const { mongoose, mockgoose } = require('../test/mockgoose');
let Model = require('../model.js');
let conn;

describe('something', function() {
     before(() => {
        return mockgoose.prepareStorage().then(() => {
            mongoose.connect('mongodb://127.0.0.1:27017/testingDB');
            return new Promise(resolve => {
                mongoose.connection.once('connected', () => {
                    conn = mongoose.connection;
                    Model = Model(conn);
                    // we pass …
Run Code Online (Sandbox Code Playgroud)

mocha.js mongoose mockgoose

5
推荐指数
0
解决办法
360
查看次数

Mockgoose 在运行 mockgoose.prepareStorage 时下载 234mb

我有一个节点应用程序,可以访问使用 mocha 和 mockgoose 测试的 mongodb 抛出的猫鼬。我最近搬到了 mockgoose 7.0.5。我按照 github 上的入门指南将我的 mocha 超时时间提高到 2 分钟。

这是我在测试中的前功能:

import mongoose from 'mongoose';
var Mockgoose = require('mockgoose').Mockgoose;
[...]

const mockgoose = new Mockgoose(mongoose);

before(function(done) {
  try {
    console.log('BEFORE prepareStorage');
    mockgoose.prepareStorage().then(() => {
    console.log('IN prepareStorage');
      mongoose.connect('mongodb://example.com/TestingDB', function(err) {
        done(err);
      });
    }).catch((error) => {
      done(error);
    });
  } catch(e) {
    done(e);
  }
  console.log('AFTER prepareStorage');  
});

beforeEach(function(done) {
  mockgoose.helper.reset();
  done();
});
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,在这mockgoose.prepareStorage一步中,mockgoose 似乎正在下载一些东西。

BEFORE prepareStorage
AFTER prepareStorage
Completed: 0.1 % (0.2mb / 234.3mb
Run Code Online (Sandbox Code Playgroud)

我想这与请求的 2 …

javascript mocha.js mongoose node.js mockgoose

5
推荐指数
1
解决办法
1092
查看次数

在Jest/Mockgoose测试中,Mongoose聚合查询失败,在其他地方工作

我正在尝试为我的Mongoose模型创建一些测试,我无法弄清楚如何让Jest/Mockgoose测试通过我创建的用于检索的速记查询/聚合管道(参见下面的第一个代码块)来自一个集合的随机文档,该文档未在另一个集合中引用.

activitySchema.query.getUnused = function() {
    return Activity.aggregate()
        .lookup({
            from: 'userActivity',
            localField: '_id',
            foreignField: 'activity',
            as: 'matched_docs',
        })
        .match({ matched_docs: { $eq: [] } })
        .sample(1)
        .project({ matched_docs: 0, __v: 0 })
        .exec()
}
Run Code Online (Sandbox Code Playgroud)

开玩笑测试

describe('Activity methods', () => {
    test('Activity unused query executes', (done) => {
        function createActivity() {
            return Activity
                .create({ activity: 'running' })
                .then(activity => {
                    console.log('Activity is generated')
                    return Promise.resolve(true)
                })
        }
        async function retrieveActivity() {
            await createActivity()
            Activity
                .find()
                .getUnused()
                .then(unused => {
                    console.log(unused);
                    expect(unused).toHaveLength(1)
                    done() …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb jestjs mockgoose

4
推荐指数
2
解决办法
5900
查看次数

柴http - 双回调问题

我使用chai-http对我的REST api进行了正常的单元测试.它失败并出现以下错误

warn: double callback!
error: { SyntaxError: Unexpected token { in JSON at position 58
    at Object.parse (native)
    at IncomingMessage.<anonymous> (E:\projects\node_modules\chai-http\node_modules\superagent\lib\node\parsers\json.js:8:35)
    at emitNone (events.js:91:20)
    at IncomingMessage.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
  rawResponse: '{"books":[],"count":0,"page":1,"pages":0,"pageSize":10}{"books":[],"count":0,"page":1,"pages":0,"pageSize":10}',
  statusCode: 200,
  response: undefined }
Run Code Online (Sandbox Code Playgroud)

如您所见,rawResponse由于测试失败,重复.我调试了代码,控制器代码只调用一次,输出正确.但无法理解为什么会出现这种错误.

以下是测试代码

// some code to mock mongoose with mockgoose
....
....

let server = require('../../../server');
let should = chai.should();
chai.use(chaiHttp);


describe.only('Books', () => {
  describe('/GET book', () => {
      it('it should GET all …
Run Code Online (Sandbox Code Playgroud)

mocha.js node.js chai mockgoose chai-http

2
推荐指数
1
解决办法
2444
查看次数

如何在快速应用程序集成测试中使用mockgoose(或任何其他数据库模拟)

在简单的单元测试中使用mockgoose非常简单.但是,对于如何在验收或集成测试中使用mockgoose或其他模拟解决方案,我有点模糊.

给出一个简单的express/MongoDB应用程序,如下所示:

/*app.js*/

const express = require('express')
const app = express()
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

var greetingSchema = mongoose.Schema({
    greeting: String
});

var Greeting = mongoose.model('Greeting', greetingSchema);

app.get('/', function (req, res) {
  Greeting.find({greeting: 'Hello World!'}, function (err, greeting){
    res.send(greeting);
  });  
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})
Run Code Online (Sandbox Code Playgroud)

和这样的简单集成测试:

/*test.js*/

const app = require('app.js');  
const request = require('supertest');

it('sends "Hello World!" on the response body', (done) => {  
  request(app)
      .get('/')
      .expect(200, 'Hello World!', done);
  }); …
Run Code Online (Sandbox Code Playgroud)

testing integration-testing mongodb express mockgoose

1
推荐指数
1
解决办法
3179
查看次数