传入JSON正文

时间:2019-03-22 22:27:11

标签: javascript json jestjs

我正在编写一些单元测试,但收到错误

'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)

  })
})

我想知道如何创建一些要传递给JSON.parse接受的请求,以便可以测试bar函数中的逻辑

1 个答案:

答案 0 :(得分:3)

在身体上使用implementation 'androidx.constraintlayout:constraintlayout:1.1.2'

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格式的字符串。但是,您没有传递字符串,而是传递了JSON.parse(),它是一个对象。结果,{"Info": "into", "subId": 1010}被调用。

Object.toString()返回({}).toString()。因此,您实际上是在呼叫"[object Object]"。您的错误消息抱怨JSON.parse("[object Object]")不是有效的JSON字符串。