Переход в тело JSON - PullRequest
       16

Переход в тело JSON

0 голосов
/ 23 марта 2019

Я пишу некоторые модульные тесты и получаю сообщение об ошибке

'SyntaxError: Unexpected token o in JSON at position 1' 

Я понимаю, что это потому, что JSON.parse уже читает объект.Вот пример кода

foo.js

const bar = async (request)=>{
        let Id = request.Id;
        let Handle = request.Handle;
        request = JSON.parse(request.body);
        let requestMessage = request.Info;
        let subId = request.subId;
}

Вот тестовый код

foo.test.js

describe('foo tests', ()=>{
  test('footest', ()=>{
    let req = {
      Id: 111,
      Handle: "handle",
      body: {"Info": "into", "subId": 1010}
    };

    return foo.bar(req)

  })
})

Я хотел бы знать, как я могу создать что-то, чтобы передать как req, что JSON.parseприму, чтобы я мог проверить логику, которая в функции бара

1 Ответ

3 голосов
/ 23 марта 2019

Используйте JSON.stringify() на теле.

describe('foo tests', ()=>{
  test('footest', ()=>{
    let req = {
      Id: 111,
      Handle: "handle",
      body: JSON.stringify({"Info": "into", "subId": 1010})
    };

    return foo.bar(req)

  })
})

Объяснение того, что происходит:

JSON.parse() предполагается использовать в строке в формате JSON.Вы не передаете строку, хотя, вы передаете {"Info": "into", "subId": 1010}, который является объектом.В результате вызывается Object.toString().

({}).toString() возвращает "[object Object]".Таким образом, вы фактически звоните JSON.parse("[object Object]").Ваше сообщение об ошибке жалуется, что "[object Object]" не является допустимой строкой JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...