因此,我正在为我的Netsuite脚本创建一个测试套件(Netsuite是一个业务管理平台),并且我使用推荐的框架Karmajs + Requirejs +茉莉来实现此目标。运行测试时,出现以下错误:
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
脚本。我很确定我缺少什么。协助将不胜感激。
谢谢。
答案 0 :(得分:0)
感谢大家花了一些时间来查看我的问题。
在深入调试之后,我找到了解决方案。如前所述,我错过了一些事情:
/
。我似乎已经假定这是默认情况下附加的,或者是与/SuiteScripts/CompanyNetsuite/Util/MathUtil
等效的SuiteScripts/CompanyNetsuite/Util/MathUtil.
base
中的base/Util/MathUtil
。结果编译为
../../base/Util/MathUtil
,这是不正确的。 base
是KarmaJS在编译过程中定义的目录。因此产生的配置:
require.config({
baseUrl: '/base',
paths: {
N: 'tests/unit/mocks/N'
},
map: {
"*" : {
"/SuiteScripts/CompanyNetsuite/Util" : "Util"
}
}
});