Функция JavaScript не распознается как код JavaScript - PullRequest
1 голос
/ 08 июля 2019

У меня есть следующий файл javascript MyService.js:

function(config) {

config.MyService = function(request) {
        return call('classpath:path/to/my.feature@tag', request);
    };

return config;
}

Я загружаю этот js из моего karate-config.js, чтобы использовать его из моих файлов функций.

config = karate.callSingle('classpath:path/to/MyService.js', config);

Работает как положено, и я могу вызвать my.feature из любого файла функций.Например:

Given def res = call MyService myRequest

Проблема возникает, когда я пытаюсь добавить новый уровень в функцию MyService.js:

function(config) {

config.ApiOauthService = {
    myCall : function(request) {
        return call('classpath:path/to/my.feature@tag', request);
    }
};


return config;
}

Когда я добавляю следующий код в мой файл функций:

Given def myCall = call MyService.myCall myRequest

Я получаю следующую ошибку: «не файл функции или функции js»

Кто-нибудь знает, в чем проблема?Можно ли сделать то, что я пытаюсь сделать?

Спасибо

1 Ответ

0 голосов
/ 08 июля 2019

Да, в карате 0.9.3 и далее мы ограничиваем вложенность JS-функции только на верхнем уровне.Вы можете найти полное объяснение в этом комментарии .

Так что, если вам нужна функция JS "интервал имен", вы можете легко добиться этого согласно документации: https://github.com/intuit/karate#multiple-functions-in-one-file

А если вам нужно более сложное вложение, переключитесь на использование кода Java, где вы можете вкладывать функции на любом уровне.

...