我正在编写一些单元测试,但收到错误
'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函数中的逻辑
答案 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字符串。