数据在响应中为字符串:function(status,data,headers,statusText)

时间:2015-11-30 20:02:00

标签: angularjs jasmine

我有一个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和格式

的对象

2 个答案:

答案 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));