2015-07-04 4 views
0

Я пытаюсь проверить с помощью supertest, что ответ, возвращаемый REST конечной точки содержит ошибку проверки в moongose проверки, которая выглядит, как показано нижеКак утверждать ошибки валидации мангуста с помощью supertest?

errors: Object { 
    firstName: Object { 
    kind: 'required', 
    message: 'Path `firstName` is required.', 
    name: 'ValidatorError', 
    path: 'firstName', 
    properties: Object { 
     message: 'Path `{PATH}` is required.', 
     path: 'firstName', 
     type: 'required' 
    }, 
    } 

Я пишу следующий тест

it('should return well formatted error response when first name is missing', function(done){ 
    var user = {lastName:"Ranger", email:"[email protected]"}; 
    request(app) 
    .post('/api/user') 
    .send(user) 
    .end(function(err, res){ 
     res.body.should.have.property("path", "firstName"); 
     done(); 
    }); 
}); 

Но я получение следующей ошибки

AssertionError: expected Object { 
errors: Object { 
    firstName: Object { 
    kind: 'required', 
    message: 'Path `firstName` is required.', 
    name: 'ValidatorError', 
    path: 'firstName', 
    properties: Object { 
     message: 'Path `{PATH}` is required.', 
     path: 'firstName', 
     type: 'required' 
    }, 
    } 
}, 
message: 'User validation failed', 
name: 'ValidationError', 
} to have property path 
    at Test.<anonymous> (test/userTests.js:23:25) 
    at net.js:1276:10 

Как написать такие утверждения ?

ответ

0

Вы утверждаете, что res.body имеет свойство 'path', однако res.body является родительский объект, который содержит только свойства errors, message и name.

Вы можете проверить эти свойства, или вы можете получить доступ к вложенной объект ошибки следующим образом:

.end(function(err, res){ 
    res.body.errors.firstName.should.have.property("path") 
    done(); 
}); 

Вполне вероятно, удобнее всего, чтобы проверить свойства на родительский объект, так как это должно доказать достаточно.

Смежные вопросы