Чтение локальных файлов JSON при динамическом создании функциональных тестов в Intern - PullRequest
0 голосов
/ 05 октября 2018

Я создаю функциональные тесты динамически, используя Intern v4 и dojo 1.7.Для этого я назначаю registerSuite переменной и прикрепляю каждый тест к свойству Tests в registerSuite:

var registerSuite = intern.getInterface('object').registerSuite;
var assert = intern.getPlugin('chai').assert;

// ...........a bunch more code .........

registerSuite.tests['test_name'] = function() {

    // READ JSON FILE HERE
    var JSON = 'filename.json';

    // ....... a bunch more code ........
}

Эта часть работает отлично.Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно читать информацию из разных файлов JSON для каждого теста, который я создаю динамически.Кажется, я не могу найти способ прочитать JSON-файл во время работы javascript dojo (я хочу вызвать его в функции registerSuite.tests, где написано // READ JSON FILE HERE).Я пробовал dojo xhr.get, node fs, intern this.remote.get, кажется, ничего не работает.

Я могу получить статический файл JSON с define(['dojo/text!./generated_tests.json']), но это не помогает мне, потому что естьнеизвестное количество файлов JSON с неизвестными именами файлов, поэтому у меня нет информации, которая мне понадобится для вызова их в блоке объявления.

Пожалуйста, дайте мне знать, если мое описание неясно.Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 05 октября 2018

Поскольку вы создаете функциональные тесты, они всегда будут выполняться в Node, поэтому у вас есть доступ к среде Node.Это означает, что вы могли бы сделать что-то вроде:

var registerSuite = intern.getPlugin('interface.object').registerSuite;
var assert = intern.getPlugin('chai').assert;

var tests = {};
tests['test_name'] = function () {
    var JSON = require('filename.json');
    // or require.nodeRequire('filename.json')
    // or JSON.parse(require('fs').readFileSync('filename.json', {
    //      encoding: 'utf8'
    //    }))
}

registerSuite('my suite', tests);

Еще одна вещь, которую нужно иметь в виду, - присвоение значений для registerSuite.tests на самом деле ничего не делает (или не должно).Вам нужно будет позвонить registerSuite, передав ему имя набора и объект тестов, чтобы реально зарегистрировать тесты.

...