返回Mirage.Response对象与通过Mirage返回原始JSON对象有什么区别?

返回Mirage.Response对象与通过Mirage返回原始JSON对象有什么区别?,json,unit-testing,ember.js,mocking,ember-cli-mirage,Json,Unit Testing,Ember.js,Mocking,Ember Cli Mirage,我正在尝试在浏览器中构建一个EmberJS测试服务器。我有一个对“myApiMethod”的API调用,我试图从中获取一个JSON对象。在尝试测试来自特定方法的响应时,我发现我可以返回一个原始json对象,或者将其包装在Mirage.response对象中。因为我希望模拟服务器的响应能够反映真实世界,所以我不确定这两个响应中哪一个更好 我想知道的是我在Mirage的config.js中的以下两段代码之间的功能差异: 第1版: this.get('/myApiMethod', functi

我正在尝试在浏览器中构建一个EmberJS测试服务器。我有一个对“myApiMethod”的API调用,我试图从中获取一个JSON对象。在尝试测试来自特定方法的响应时,我发现我可以返回一个原始json对象,或者将其包装在Mirage.response对象中。因为我希望模拟服务器的响应能够反映真实世界,所以我不确定这两个响应中哪一个更好

我想知道的是我在Mirage的config.js中的以下两段代码之间的功能差异:

第1版:

    this.get('/myApiMethod', function(param1, param2){
        var jsonObject = myFunctionThatReturnsJson(param1, param2);
        return jsonObject;
    });
    this.get('/myApiMethod',function(param1, param2){
        var jsonObject = myFunctionThatReturnsJson(param1, param2);
        return Mirage.Response(200, {}, jsonObject); 
    });
vs.

第2版:

    this.get('/myApiMethod', function(param1, param2){
        var jsonObject = myFunctionThatReturnsJson(param1, param2);
        return jsonObject;
    });
    this.get('/myApiMethod',function(param1, param2){
        var jsonObject = myFunctionThatReturnsJson(param1, param2);
        return Mirage.Response(200, {}, jsonObject); 
    });
海市蜃楼使用引擎盖下的模拟XHR响应。假装器本身不关心响应类型,因此当使用JSON响应时,需要手动将其字符串化。以下是文档中的一个示例:

this.get('/photos/:id', function(request) {
  return [200, {"Content-Type": "application/json"}, JSON.stringify(PHOTOS[request.params.id])]
});
Mirage最初的决定之一是假设,大多数情况下,人们希望用JSON响应。因此,Mirage中的路由处理程序允许您返回普通JavaScript对象:

this.get('/photos/:id', () => {
  return [{ id: 1, url: 'lorempixel.com/100/100' }];
});
Mirage负责字符串化响应并设置适当的ContentType头

Mirage.Response
对象是为那些想要自定义其响应的人添加的,这些人可以使用不同的内容类型、更改标题或使用不同于给定动词默认值的HTTP响应代码

简而言之,如果您需要的不是默认行为,请使用
Mirage.Response