Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从嵌套json向jasmine数据提供程序赋值?_Javascript_Jasmine_Protractor_Dataprovider - Fatal编程技术网

Javascript 从嵌套json向jasmine数据提供程序赋值?

Javascript 从嵌套json向jasmine数据提供程序赋值?,javascript,jasmine,protractor,dataprovider,Javascript,Jasmine,Protractor,Dataprovider,我有以下sample.json文件。上的示例演示了简单JSON数据。如何将以下json数据的值传递给数据提供程序 [ { "company_name": "Google", "Headquartered_at": "Mountain view", "Department": [ { "name": "Engineering", "number_of_subDepart

我有以下sample.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"
        }]
    }


]
spec文件中的用法示例如下所示

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数据提供程序的标准JSON符号,以您需要的任何方式与传递的JSON进行交互。还是要在数组中的每个JSON块上调用它

datafile.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();
})

使用jasmine数据提供程序的标准JSON表示法,应该能够以您需要的任何方式与传递的JSON进行交互。还是要在数组中的每个JSON块上调用它

datafile.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();
})

似乎这可能是间谍的案子似乎这可能是间谍的案子