我有一个API调用:
$http.post(that.auth.apiUrl + '/data/auth', authParam).then(function (jsonObj) {
//jsonObj.data is string
var data = JSON.parse(jsonObj.data);
}
它返回一个JSON对象,其中包含数据库中的字符串 对象{数据:" {" userId":1," userFormat":" 2"}",状态:200,配置:对象,statusText:" OK"}
对于它的单元测试,我有一个模拟的http请求,如:
var mockObj = { " userid":1, " userFormat" :" 2" };
因为我需要将数据作为字符串,所以我做了字符串化
$httpBackend.when('POST', apiUrl + '/data/auth').respond( 200,
JSON.stringify(mockObj)
);
但它返回 对象{data:Object {userid:1,userFormat:' 2'},状态:200,标题:function(name){...
所以我没有在数据对象中获取字符串,而是获得了另一个Object。如何以字符串格式制作?我希望数据具有字符串值,而不是具有userId和格式
的对象答案 0 :(得分:1)
根据https://docs.angularjs.org/api/ngMockE2E/service/ $ httpBackend看起来respond()
采用回调函数(返回数组)或数据。我没有看到选择状态代码然后数据的选项。
var mockObj = { "userid": 1, "userFormat" : "2" };
$httpBackend.when('POST', apiUrl + '/data/auth').respond(JSON.stringify(mockObj));
答案 1 :(得分:0)
当我给模拟对象一个字符串并再次将其字符串化为
时,它起作用了var mockObj = "{ 'userid': 1, 'userFormat' : '2' }";
$httpBackend.when('POST', apiUrl + '/data/auth').respond(JSON.stringify(mockObj));