- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对我的 Mongoose 模型进行了测试,虽然一个模型的测试运行完全正常,但另一个模型基本上是一个副本 - 不起作用。老实说我不明白这个问题。我尝试删除一些属性或添加硬编码值以真正 100% 完全匹配 - 但不知何故我总是遇到类似的错误。
错误。让我发疯的是,我尝试删除/添加“_id”和“createdOn”字段,但至少“_id”总是出现在错误中。正如上面在另一个模型中所说,测试不会提示“_id”,因为我没有在那里验证它......我只是不明白。
insert › Should save a channel
expect(received).toMatchObject(expected)
- Expected - 1
+ Received + 2
@@ -1,8 +1,9 @@
Object {
+ "_id": "5e962f1dc133d8b92891ddaf",
"createdBy": "5e962f1dc133d8b92891ddae",
- "createdOn": Anything,
+ "createdOn": 2020-04-14T21:46:05.907Z,
"hasAcceptedLegal": false,
"isActive": true,
"isPublic": false,
"members": Array [
"5e962f1dc133d8b92891ddae",
48 | expect(spy).toHaveBeenCalled();
49 |
> 50 | expect(channel).toMatchObject({
| ^
51 | name: mockName,
52 | createdBy: mockCreatedById,
53 | createdOn: expect.anything(),
at Object.it (test/model/channel.model.test.ts:50:21)
相应型号
import mongoose, { Schema, Document } from "mongoose";
import { IUser } from "./user.model";
export interface IChannel extends Document {
name: string;
createdBy: IUser["id"];
createdOn: Date;
isActive: boolean;
isPublic: boolean;
hasAcceptedLegal: boolean;
members: [IUser["id"]];
}
const ChannelSchema: Schema = new Schema({
name: { type: String, required: true },
createdBy: {
type: Schema.Types.ObjectId,
ref: "User",
required: true,
},
createdOn: { type: Date },
isActive: { type: Boolean, default: true },
isPublic: { type: Boolean, default: false },
hasAcceptedLegal: { type: Boolean, default: false },
members: [
{
type: Schema.Types.ObjectId,
ref: "User",
required: true,
},
],
});
export default mongoose.model<IChannel>("Channel", ChannelSchema);
测试:
it("Should save a channel", async () => {
expect.assertions(2);
let mockName = Faker.company.companyName();
let mockCreatedById = Types.ObjectId();
let mockCreatedOn = Date.now();
const channel: IChannel = new Channel({
name: mockName,
createdBy: mockCreatedById,
createdOn: mockCreatedOn,
members: [mockCreatedById],
});
const spy = jest.spyOn(channel, "save");
channel.save();
expect(spy).toHaveBeenCalled();
expect(channel).toMatchObject({
name: mockName,
createdBy: mockCreatedById,
createdOn: expect.anything(),
isActive: true,
isPublic: false,
hasAcceptedLegal: false,
members: [mockCreatedById],
});
});
最佳答案
仅供引用,我发现了一些东西。返回的 Mongoose 对象应该使用“.toJSON()”进行转换,然后它就可以工作,但即使这样,“createdOn”字段也有问题,因为它似乎是格式化的日期或其他东西。像这样(没有字符串,缺少括号)。我现在最终所做的是以下内容,现在它可以工作了:
it("Should save a channel (required+defaults)", async () => {
expect.assertions(2);
let mockName = Faker.company.companyName();
let mockCreatedById = Types.ObjectId();
let mockCreatedOn = new Date();
const channel: IChannel = new Channel({
name: mockName,
createdBy: mockCreatedById,
createdOn: mockCreatedOn,
members: [mockCreatedById],
});
const spy = jest.spyOn(channel, "save");
channel.save();
expect(spy).toHaveBeenCalled();
expect(channel.toJSON()).toMatchObject({
_id: expect.anything(),
name: mockName,
createdBy: mockCreatedById,
createdOn: expect.anything(),
isActive: true,
isPublic: false,
hasAcceptedLegal: false,
members: expect.arrayContaining([mockCreatedById]),
});
});
关于mongodb - Jest toMatchObject 与 MongoDB 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61217935/
我对我的 Mongoose 模型进行了测试,虽然一个模型的测试运行完全正常,但另一个模型基本上是一个副本 - 不起作用。老实说我不明白这个问题。我尝试删除一些属性或添加硬编码值以真正 100% 完全匹
我对我的 Mongoose 模型进行了测试,虽然一个模型的测试运行完全正常,但另一个模型基本上是一个副本 - 不起作用。老实说我不明白这个问题。我尝试删除一些属性或添加硬编码值以真正 100% 完全匹
我正在使用 Jest 来测试我的 Node 应用程序,以下情况验证了一些数据已添加到数据库中(考虑 DB 逻辑工作正常): it("should add empty string hooks if n
我正在测试一个对象是否匹配一组字段,但其中一个是 float ,我需要使用 .toBeCloseTo .如何在一个 expect 内完成? expect(foo).toMatchObject({
我写了下面的测试: it('Can decrement the current step', function () { expect(reducer(TestState, { type: '
假设某个东西返回一个复杂的对象: const value = { ..., client: { ... }, ... }; 我想测试一堆属性,对于client我想确保它有一定的
我想用 jest 测试返回的对象是否符合我的预期。 我正在尝试这个: const desiredResult = { host: '192.168.1.1', port: expect.any
我正在使用 JEST 匹配器 toMatchObject 来确保对象包含多个属性并且一些值是静态的,而其他一些值应该匹配特定的正则表达式 问题是:当静态值不匹配时,输出也会显示正则表达式值不匹配,尽管
我有一个快速 API 端点,它返回一个对象,并且在该对象上有一个属性(在我们下面的示例中为 property3),它的值是日期。 例如 res.body = { "property1
我正在测试一个 React 应用程序,它基本上遵循了标准的、官方认可的 create-react-app 设置。 我的测试如下: import React from 'react'; import {
我是一名优秀的程序员,十分优秀!