Jasmine javascript : как проверить ответ на создание сообщения с некоторыми свойствами по мере его создания?

#javascript #jasmine #karma-jasmine

Вопрос:

У меня следующий ответ; как я могу проверить, что он был создан, если ответ содержит идентификатор пользователя ?

 ({
  id: '612bd3f42ca01806398da144',
  data: Object({
    createdOn: '2021-08-29T18:37:39.693Z',
    lastUpdatedBy: null,
    userId: '60f469cf784379051298e96d',
    displayName: 'Nadia',
    postText: null,
    postImages: [],
    pluginInstance: Object({
      pluginInstanceId: '1627334094776-047554258642281355',
      pluginInstanceTitle: 'communityFeedPlugin'
    }),
    isPublic: false,
    _buildfire: Object({
      index: Object({
        array1: [Object({
          string1: 'userId_60f469cf784379051298e96d'
        }), Object({
          string1: 'displayName_nadia'
        }), Object({
          string1: 'pluginTitle_communityfeedplugin'
        }), Object({
          string1: 'isPublic_0'
        })]
      })
    })
  }),
  tag: 'posts'
})
 

Комментарии:

1. Каков контекст для этого вопроса? Вы запрашиваете контент у серверной части и получаете ответ в JSON?

2. да, у меня есть ответ json

Ответ №1:

Если вы используете express rest api, вы можете использовать вот так.

 const exists = await posts.findOne({ "data.userid": userid });
if(exists) {
    return res.json({ success: false, message: "User already exists"})
}
 

Ответ №2:

Если я правильно понял, вам нужно знать, присутствует ли свойство userId/правдиво.

Учитывая, что ответ хранится в jsonBody переменной, используйте оператор if примерно так:

 if (jsonBody.data.userId) {
    ...
}
 

Кроме того, убедитесь, что ответ правильно проанализирован в JSON, чтобы вы могли перемещаться по нему.

Если вам нужно знать, существует ли ответ в первую очередь или нет, вы можете добавить еще один, если проверите:

 if (jsonBody) {
    ...
    if (jsonBody.data.userId) {...}
    ...
}
 

Или объедините обе проверки в одном операторе if:

 if (jsonBody amp;amp; jsonBody.data.userId) {...}
 

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

Ответ №3:

работал в такой форме :

 it('Add public post with post image and text', function(done) {
    Posts.addPost({isPublic : true , postImages :'image test',postText : 'post text sample'},(err,resp) => {
        expect(resp.data).toEqual(jasmine.objectContaining({
            postImages: 'image test',
            postText:'post text sample',
            userId: authManager.currentUser._id,
            isPublic: true
          }));
      done();
    }); 
});
 

Комментарии:

1. Пожалуйста, укажите дополнительную информацию в своем ответе. Как это написано в настоящее время, трудно понять ваше решение.