相关疑难解决方法(0)

使用Mongoose进行单元测试

我是Node.js,Mongoose的新手,并且在这个环境中进行测试.我在单独的文件中声明了以下架构.

Issue = mongoose.model("Issue", {
  identifier: String,
    date: String,
    url: String,    
    name: String,
    thumbnailURL: String
});
Run Code Online (Sandbox Code Playgroud)

然后我有这个方法,只返回IssueMongoDB集合中的所有实例.

function issues(request, response) {
  response.setHeader('Content-Type', 'text/json');

  Issue.find().sort('date').exec(function(error, items) {
    if (error) {
      response.send(403, {"status": "error", "error:": exception});
    }
    else {
      response.send(200, {"issues": items});
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

我已经通过实验得到了这一点,现在我想测试它,但我遇到了一个问题.如何在不设置MongoDB连接的情况下进行测试,我知道我可以设置所有这些内容,但这是一个集成测试.我想编写单元测试来测试以下内容:

  • 该函数是否正确设置了内容类型
  • 该功能是否按date字段排序
  • 发生错误时函数是否返回403?
  • ... 等等

我很想知道如何重构我现有的代码以使其更具单元可测试性.我尝试过创建第二个被调用的函数,接受response和Item架构对象作为参数,但感觉不对.有谁有更好的建议?

unit-testing mongoose mongodb node.js jasmine

16
推荐指数
3
解决办法
9015
查看次数

模拟/存根Mongoose模型保存方法

给出一个简单的Mongoose模型:

import mongoose, { Schema } from 'mongoose';

const PostSchema = Schema({
  title:    { type: String },
  postDate: { type: Date, default: Date.now }
}, { timestamps: true });

const Post = mongoose.model('Post', PostSchema);

export default Post;
Run Code Online (Sandbox Code Playgroud)

我希望测试这个模型,但我遇到了一些障碍.

我当前的规范看起来像这样(为简洁起见省略了一些东西):

import mongoose from 'mongoose';
import { expect } from 'chai';
import { Post } from '../../app/models';

describe('Post', () => {
  beforeEach((done) => {
    mongoose.connect('mongodb://localhost/node-test');
    done();
  });

  describe('Given a valid post', () => {
    it('should create the post', (done) => {
      const …
Run Code Online (Sandbox Code Playgroud)

unit-testing mongoose mongodb node.js sinon

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

标签 统计

mongodb ×2

mongoose ×2

node.js ×2

unit-testing ×2

jasmine ×1

sinon ×1