Я новичок в использовании Jest и пытаюсь провести простой тест.
Я просто хочу посмотреть, есть ли в моем объекте определенные подполя c, поэтому я использую toMatchObject метод, но мой тест не хочет проходить, даже если мой объект похож (вы можете увидеть мой console.log в конце экрана консоли.
И я действительно не понимаю его. Джест говорит мне, что он ожидает (ожидается - 0) и что он получил больше, чем ожидал, но разве это не цель функции toMatchObject?
Я думаю, что что-то упустил: c ...
Ну, заранее спасибо за вашу помощь
Это мой код:
import { UserExport } from "../src/model/user";
import { DatabaseManager } from "../src/db/databaseManager";
const dbm: Promise<DatabaseManager> = DatabaseManager.getDb()
const userTemplate: UserExport = ({
_id: new Types.ObjectId("507f191e810c19729de860ea"),
pseudo: "toto",
email: "toto@etu.uca.fr",
posts: []
} as unknown) as UserExport;
describe("Test User DB", () => {
test("should return the doc with findById", async () => {
let userModel: Model<UserExport> = (await dbm).getModel<UserExport>("users");
mockingoose(userModel).toReturn(userTemplate, "findOne");
debugger;
const doc = await userModel.findById(new Types.ObjectId("507f191e810c19729de860ea"));
console.log(doc, userTemplate);
expect({...doc}).toMatchObject(userTemplate);
});
});
И это вывод:
tests/user.test.ts (10.94s)
Test User DB
✕ should return the doc with findById (107ms)
● Test User DB › should return the doc with findById
expect(received).toMatchObject(expected)
- Expected - 0
+ Received + 75
Object {
+ "$__": InternalCache {
+ "$options": Object {},
+ "$setCalled": Set {
+ "_id",
+ "pseudo",
+ "email",
+ "posts",
+ },
"_id": "507f191e810c19729de860ea",
+ "activePaths": StateMachine {
+ "forEach": [Function anonymous],
+ "paths": Object {
+ "_id": "modify",
+ "email": "modify",
+ "posts": "modify",
+ "pseudo": "modify",
+ },
+ "stateNames": Array [
+ "require",
+ "modify",
+ "init",
+ "default",
+ "ignore",
+ ],
+ "states": Object {
+ "default": Object {},
+ "ignore": Object {},
+ "init": Object {},
+ "modify": Object {
+ "_id": true,
+ "email": true,
+ "posts": true,
+ "pseudo": true,
+ },
+ "require": Object {},
+ },
+ },
+ "adhocPaths": undefined,
+ "cachedRequired": Object {},
+ "emitter": EventEmitter {
+ "_events": Object {},
+ "_eventsCount": 0,
+ "_maxListeners": 0,
+ },
+ "fullPath": undefined,
+ "getters": Object {},
+ "inserting": undefined,
+ "ownerDocument": undefined,
+ "pathsToScopes": Object {
+ "posts": Object {
+ "_id": "507f191e810c19729de860ea",
"email": "toto@etu.uca.fr",
"posts": Array [],
"pseudo": "toto",
+ },
+ },
+ "populate": undefined,
+ "populated": undefined,
+ "removing": undefined,
+ "saveError": undefined,
+ "saving": undefined,
+ "scope": undefined,
+ "selected": undefined,
+ "session": null,
+ "shardval": undefined,
+ "strictMode": true,
+ "validationError": undefined,
+ "version": undefined,
+ "wasPopulated": false,
+ },
+ "$locals": Object {},
+ "_doc": Object {
+ "_id": "507f191e810c19729de860ea",
+ "email": "toto@etu.uca.fr",
+ "posts": CoreMongooseArray [],
+ "pseudo": "toto",
+ },
+ "errors": undefined,
+ "isNew": true,
}
23 | const doc = await userModel.findById(new Types.ObjectId("507f191e810c19729de860ea"));
24 | console.log(doc, userTemplate);
> 25 | expect({...doc}).toMatchObject(userTemplate);
| ^
26 | });
27 | });
28 |
at tests/user.test.ts:25:26
at step (tests/user.test.ts:44:23)
at Object.next (tests/user.test.ts:25:53)
at fulfilled (tests/user.test.ts:16:58)
console.log tests/user.test.ts:24
{
posts: [],
_id: 507f191e810c19729de860ea,
pseudo: 'toto',
email: 'toto@etu.uca.fr'
} {
_id: 507f191e810c19729de860ea,
pseudo: 'toto',
email: 'toto@etu.uca.fr',
posts: []
}
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 11.605s
Ran all test suites.
npm ERR! Test failed. See above for more details.