javascript - 从嵌套的json为jasmine-data-provider赋值?
问题描述
我有以下 sample.json 文件。在jasmine-data-provider上找到的示例针对简单的 JSON 数据进行了说明。如何将以下 json 数据的值传递给数据提供者。
[
{
"company_name": "Google",
"Headquartered_at": "Mountain view",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "3",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "SRE",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
}, {
"name": "Human resources",
"number_of_subDepartment": "0"
}]
},
{
"company_name": "Microsoft",
"Headquartered_at": "Redmond",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}]
},
{
"company_name": "Facebook",
"Headquartered_at": "Menlo park",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}]
}
]
规范文件中的使用示例如下
describe('test addition with data provider - provider function', function () {
function plusProvider() {
return [
{a: 2, b: 3, expected: 5},
{a: '14', b: 15, expected: 29},
{a: 12, b: '13', expected: 25},
{a: '22', b: '13', expected: 35},
];
}
using(plusProvider, function (data) {
it('should calc with operator +', function () {
var result = calculator.calc(data.a, data.b, '+');
expect(result).toEqual(data.expected);
});
});
});
由于 sample.json 文件更复杂,我如何读取数据提供者函数并将值分配给函数。你能给我指出正确的资源吗?
解决方案
应该可以使用带有 jasmine-data-provider 的标准 JSON 表示法以您需要的任何方式与传递的 JSON 进行交互。还是您想在数组中的每个 JSON 块上调用它?
数据文件.json
[
{
"company_name": "Google",
"Headquartered_at": "Mountain view",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "3",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "SRE",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}
]
},
{
"company_name": "Microsoft",
"Headquartered_at": "Redmond",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}
]
},
{
"company_name": "Facebook",
"Headquartered_at": "Menlo park",
"Department": [
{
"name": "Engineering",
"number_of_subDepartment": "2",
"subDepartments": [
{
"subDepartment_name": "Developers",
"no_of_employees": "10"
},
{
"subDepartment_name": "QA",
"no_of_employees": "10"
}
]
},
{
"name": "Human resources",
"number_of_subDepartment": "0"
}
]
}
]
代码
let using = require('jasmine-data-provider');
let file = require('./datafile.json');
using(file, (companyData) => {
console.log(companyData.company_name);
console.log(companyData.Headquartered_at);
for (let department of companyData.Department) {
console.log('Department name=' + department.name);
console.log('num sub departments=' + department.number_of_subDepartment);
if (department.number_of_subDepartment > 0) {
for (let subDepartment of department.subDepartments) {
console.log(subDepartment);
}
}
}
console.log();
//alternatively you can access in the standard way
console.log(companyData.Department[0].name);
console.log();
})
推荐阅读
- apache-kafka - Kafka Connect HDFS Sink中的多个嵌套字段分区
- mysql - 如何根据行的结果值附加行或重新触发查询(在循环中?)?
- c# - 如何在 Mac 中使用 Selenium WebDriver 打开 Chrome 时保持打开状态
- javascript - AngularJS - 根据返回的 localStorage 隐藏标题、sidebarMeta、templateUrl
- raspberry-pi - 通过写入 micro SD 卡配置树莓派 wifi
- google-apps-script - 无法让我的 Google API 正确连接以进行映射项目
- omnet++ - 汽车到达目的地后如何停止整个应用程序
- css - div旁边的css虚线?
- python - 用于将字符串与子字符串匹配的正则表达式
- java - Eclipse 光标位置停留在行首