Сравнение объектов с датами из MongoDb в Мокко - PullRequest
0 голосов
/ 06 сентября 2018

У меня сейчас проблема с тестом в мокко. Я хочу протестировать метод getById, который возвращает объект из базы данных mongodb. Все отлично работает, кроме сравнения даты. Это то, что я делаю.

description ('Service.Step.getById', function () {

before(done => {
    mongoose.connect(getConnectionString());
    mongoose.connection.on('error', () => {
        console.error("Connecting to database failed");
    });
    mongoose.connection.once('open', () => {
        console.log('Connected to Database');
        done();
    });
});

it('should return a step', async function(){
    assert.equal((await StepService.getById("someId")).toObject(), {
        Title : "SomeTitle",
        _id: mongodb.ObjectID("someId"),
        SchemaVersion : "0.0.1",
        Description: "SomeDescription",
        Video: "Video.mp4",
        Image : null,
        __v : 0,
        Created : "2018-09-05T15:24:11.779Z",
        Updated :  "2018-09-05T15:24:11.779Z"
    });
});

Теперь проблема в том, что mongoose возвращает объект Date, а не просто строку. (это то, что показывает тест)

  • «Обновлено»: [Дата: 2018-09-05T15: 24: 11,779Z]
  • «Обновлено»: «2018-09-05T15: 24: 11,779Z»

однако, если я заменю Созданное (или Обновленное) в assert на

Created : new Date("2018-09-05T15:24:11.779Z")

мой тест не пройден полностью. Вы знаете, как я мог это исправить?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

равно утверждает нестрогое равенство (==) фактического и ожидаемого. например

{a:1} == {a:1} //false

deepEqual утверждает, что фактическое глубоко равно ожидаемое

assert.deepEqual({ tea: 'green' }, { tea: 'green' }); //true
0 голосов
/ 06 сентября 2018

Хорошо.Ответ был довольно прост.Кажется, что Date сделает объект вложенным, и

assert.equal

больше не будет работать для этого.Вместо этого используйте

assert.deepEqual

, и все будет работать как положено.Правильный код будет

before(done => {
    mongoose.connect(getConnectionString());
    mongoose.connection.on('error', () => {
        console.error("Connecting to database failed");
    });
    mongoose.connection.once('open', () => {
        console.log('Connected to Database');
        done();
    });
});

it('should return a step', async function(){
    assert.deepEqual((await StepService.getById("someId")).toObject(), {
        Title : "SomeTitle",
        _id: mongodb.ObjectID("someId"),
        SchemaVersion : "0.0.1",
        Description: "SomeDescription",
        Video: "Video.mp4",
        Image : null,
        __v : 0,
        Created : new Date("2018-09-05T15:24:11.779Z"),
        Updated : new Date("2018-09-05T15:24:11.779Z")
    });
});
...