Присвоение значения провайдеру данных jasmine из вложенного json? - PullRequest
0 голосов
/ 25 января 2019

У меня есть следующий файл 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);
        });
    });
});

Как пример .jsonФайл более сложный, как мне прочитать и присвоить значения функции поставщика данных.Не могли бы вы указать мне правильные ресурсы.

1 Ответ

0 голосов
/ 26 января 2019

Должна быть возможность взаимодействовать с переданным JSON любым способом, который вам требуется, используя стандартную нотацию JSON с jasmine-data-provider. Или вы хотите вызвать его для каждого блока 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();
})
...