![](/img/trans.png)
[英]Converting redis INFO command response string to JSON object in nodejs
[英]Converting a JSON object into a response object
我正在嘗試將模擬 JSON 數據傳遞到我的 jasmine 單元測試中。
我的 JSON 格式如下所示:
{
"CompanyResponse":{
"CompanyCreatedDate":"1990-10-02",
"RunDate":"2",
"LastChangedDate":"2015-10-02",
"CompanySummary": {
"Id":"Apple",
"MaximumCredit":"10000000",
"Margin":"60000000",
"Limit":"-1500000",
"HistoricData":{
"CompanyHistoricData": [
{
"LaunchDate":"2008-08-31",
"Product":"Iphone2",
"TotalProductsCreated":"1000000",
"TotalProductsSold":"800000",
"TotalReturns":"200000",
"TotalMargin":"600000"
},
{
"LaunchDate":"2010-08-31",
"Product":"Iphone4",
"TotalProductsCreated":"2000000",
"TotalProductsSold":"1500000",
"TotalReturns":"350000",
"TotalMargin":"800000"
}
]
},
"RefurbishedData": {
"CompanyRefurbished": [
{
"Id":"Apple.201221.12",
"ProductId":"iph-213454",
"StartDate":"2015-09-07",
"FinishDate":"2015-09-10",
"CostOfRefurbishing":"50"
},
{
"Id":"Apple.201228.12",
"ProductId":"iph-4155655",
"StartDate":"2015-09-10",
"FinishDate":"2015-09-12",
"CostOfRefurbishing":"85"
}
]
}
}
}
}
我正在使用上面的 JSON 傳遞一個類似於下面的函數進行單元測試:
public getTotal(response: CompanyResponse): void {
var companySummary = response.CompanySummary;
//gets total 'CostOfRefurbishing' for all phones
var totalRefurbishmentAmount :number = 0;
for (let companyRefurbishments of companySummary.RefurbishedData) {
totalRefurbishmentAmount += Number.parseInt(companyRefurbishments.CostOfRefurbishing.toString());
}
}
我面臨的問題是我無法將CompanyResponse
作為一個整體傳遞給getTotal()
函數。 即使我使用JSON.stringify()
它也不起作用,因為它只是將其轉換為字符串,如果我使用JSON.parse()
也不起作用,因為它將其轉換回對象格式。
下面是我們在正常情況下如何調用getTotal()
方法:
export class MyService{
async CompanySummary(): Promise<CompanySummaryResponse>
{
const response = await this.http.fetch('CompanySummary');
return await response.json();
}
}
var myService = new MyService();
CompanySummary: CompanySummaryResponse;
CompanySummary = await myService.CompanySummary();
this.calculator.getTotal(CompanySummary);
干杯,大師
您可以使用JavaScript Fetch API 中的標准響應接口來模擬響應對象嗎?
如果您查看構造函數方法的文檔- 它接受一個body
參數和一個init
選項對象。 body
參數可以是一個 Blob,所以你可以;
var data = {foo: "bar"};
var blob = new Blob([JSON.stringify(data, null, 2)], {type : 'application/json'});
var init = { "status" : 200 , "statusText" : "SuperSmashingGreat!" };
var myResponse = new Response(blob, init);
這將創建一個您應該能夠傳遞給您的測試的Response
對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.