Поэтому я создаю набор тестов для своих сценариев Netsuite (Netsuite - это платформа управления бизнесом) и использую рекомендованные платформы Karmajs + Requirejs + jasmine для достижения этой цели. Когда я запускаю тесты, я получаю следующую ошибку:
08 07 2019 15:18:40.992:WARN [web-server]: 404: /SuiteScripts/CompanyNetsuite/Util/MathUtil.js
08 07 2019 15:18:40.993:DEBUG [phantomjs.launcher]: Error: Script error for "/SuiteScripts/CompanyNetsuite/Util/MathUtil", needed by: /base/Util/Calculator
Это связано с тем, что «SuiteScripts / CompanyNetsuite» является пространством имен модуля, определенным в Netsuite для базового каталога сценариев. Я последовал совету некоторой записи StackOverflow и документации конфигурации карты Requirejs, но, похоже, она не работает.
Ниже приведен пример структуры каталогов. Таким образом, в Netsuite Company-Suitescript
будет модулем /SuiteScripts/CompanyNetsuite
:
Company-Suitescript
|_ Util
|_ MathUtil.js
|_ Calculator
|_ PointsCalculator.js
.
.
.
В Invoice / script1.js, например, он имеет:
/**
* @NApiVersion 2.x
* @NModuleScope Public
*/
define([
'/SuiteScripts/CompanyNetsuite/Util/MathUtil'
], function(MathUtil){...}
Итак, чтобы справиться с этим в тестировании, я написал следующее в файле test-main.js:
require.config({
baseurl:"../../",
paths: {
N: 'base/tests/unit/mocks/N'
},
map: {
"SuiteScripts/CompanyNetsuite/Util" : {
"MathUtil" : "Util/MathUtil.js"
}
}
});
Я также пробовал:
require.config({
baseurl:"../../",
paths: {
N: 'base/tests/unit/mocks/N'
},
map: {
"SuiteScripts/CompanyNetsuite/Util" : {
"MathUtil" : "base/Util/MathUtil.js"
}
}
});
Информация о Package.json:
{
...
"devDependencies": {
"karma": "~4.1.0",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "~1.1.2",
"karma-jasmine": "~2.0.1",
"karma-phantomjs-launcher": "^1.0.4",
"jasmine-spec-reporter": "~4.2.1",
"requirejs": "^2.3.6"
}
}
Я ожидаю SuiteScripts/CompanyNetsuite/Util/MathUtil.js
для указанного base/Util/MathUtil.js
сценария. Я почти уверен, что что-то упустил. Помощь будет оценена.
Заранее спасибо.