在RhinoUnit中设置JSLint JavaScript代码使用的属性



我试图使用RhinoUnit进行独立的,基于xul的JavaScript应用程序的单元测试。我已经成功地改变了很多路径在给定的build.xml -主要改变路径到RhinoUnit脚本,我更喜欢放在另一个目录比默认的(也就是说,我把RhinoUnit文件在chrome/content/rhino和JSLint文件在chrome/content/lint)。然而,在某个时刻,我得到了这个错误:

/<project-path>/build.xml:52: javax.script.ScriptException: 
sun.org.mozilla.javascript.internal.WrappedException: Wrapped 
java.io.FileNotFoundException: /<project-path>/jslint/fulljslint.js
(No such file or directory) (<Unknown source>#31) in <Unknown source>
at line number 31

build.xml中没有提到jslint/fulljslint.js,但我在jslintant.js中发现了这个代码:

var jsLintPath = "jslint/fulljslint.js";
if (attributes.get("jslintpath")) {
    jsLintPath = attributes.get("jslintpath");
}

在我看来,这段代码为变量设置了默认值,然后尝试使用一些attributes对象的值。我假设这些attributes可以在脚本之外设置,例如通过一些<atttribute />标记int build.xml或一些配置文件。

我的问题是:我如何改变对象的值?这可能吗?或者我应该改变脚本中的硬编码字符串吗?

这是一个可以考虑的可能性。

如何弄清楚发生了什么:如果您在jslintant.js文件中插入这个,就在您提到的jsLintPath分配之前:

echo = project.createTask( "echo" );
echo.setMessage( attributes );
echo.perform( );

然后运行RhinoUnit构建,您应该看到如下内容:

run-js-lint:
     [echo] {options={eqeqeq : false, white: true, plusplus : false, bitwise :  ... }}

如何做你想要的: 'options'被定义为jslintant scriptdef的属性。要传播jslintpath的值,需要将其作为scriptdef中的属性添加,然后在使用这样定义的任务时设置它。例如:

<scriptdef name="jslintant"
           src="jslint/jslintant.js"
           language="javascript">
    <attribute name="options" />
    <attribute name="jslintpath" /> <!-- This line added. -->
    <element name="fileset" type="fileset" />
</scriptdef>

则使用任务:

<jslintant options="{eqeqeq : false, ... }"
           jslintpath="your_path_here/fulljslint.js" />

如果您重新运行构建,您应该看到:

run-js-lint:
     [echo] {jslintpath=your_path_here/fulljslint.js, options={eqeqeq : false, ... }}

您选择的路径将用于查找fulljslint.js

相关内容

  • 没有找到相关文章

最新更新