我如何才能捕获mongodb错误以通过测试?

时间:2019-12-07 11:01:40

标签: mongodb typescript mongoose jestjs

我使用猫鼬创建用户架构。

/src/server/models/User.ts:

JavaRDD<String> data = sc.textFile(yourPath);

String header = data.first();

JavaRDD<String> dataWithoutHeader = data.filter(line -> !line.equalsIgnoreCase(header) && !line.isEmpty());

JavaRDD<List<String>> dataAsList = dataWithoutHeader.map(line -> Arrays.asList(line.split(";")));

我尝试测试缺少名称的用户对象的插入,以获取从mongodb返回的错误:

/ src / 测试 /db.spec.ts:

import { model, Schema } from "mongoose";

export const UserSchema = new Schema({
  address: {
    type: String,
  },
  email: {
    required: true,
    type: String,
    unique: true,
  },
  name: {
    required: true,
    type: String,
    unique: true,
  },
});

const User = model("User", UserSchema);

export default User;

测试失败,并且出现此错误:

import { MongoMemoryServer } from "mongodb-memory-server";
import mongoose, { Model } from "mongoose";
import { UserSchema } from "../server/models/User";

let mongoServer: MongoMemoryServer;
const opts = {
  useCreateIndex: true,
  useNewUrlParser: true,
  useUnifiedTopology: true,
};

describe("Users", () => {
  let User: Model<any>;
  beforeAll(async () => {
    mongoServer = new MongoMemoryServer();
    const mongoUri = await mongoServer.getConnectionString();
    const db = await mongoose.connect(mongoUri, opts);
    User = db.model("User", UserSchema);
  });

  afterAll(async () => {
    await mongoose.disconnect();
    await mongoServer.stop();
  });

  describe("User Creation", () => {
    it("Should returns an error if a name is missing", async () => {
      const newUser = new User({
        address: "address",
        email: "user@gmail.com",
      });
      const createdUser = await User.create(newUser);
      expect(createdUser).toThrow("User validation failed");
    });
  });
});

我该如何解决?

1 个答案:

答案 0 :(得分:0)

根据jest/rejects,我使用拒绝通过了我的测试:

it("Should returns an error if a name is missing", async () => {
      const newUser = new User({
        address: "address",
        email: "user@gmail.com",
      });
       await expect(User.create(newUser)).rejects.toThrow("Path `name` is required")
    });