将ArcGIS JSAPI用作实习生中的备用加载程序时的测试套件路径

时间:2013-10-22 17:14:57

标签: javascript unit-testing dojo arcgis intern

我有一个使用ArcGIS Javascript API构建的应用程序,我一直在使用实习生添加测试。我在开发过程中在Windows 7的IIS下运行它。我在开始时intern tutorial工作时遇到了How to specify alternate loader for intern没有问题,在查看the esri jsapi version of the intern tutorial后,我能够将client.html中的加载程序设置为<script src="http://js.arcgis.com/3.7/"></script>,我可以让我的测试运行但是只有在我更改了查询字符串和intern.js中的路径以包含IIS中定义的父路径之后。

例如,假设我的应用程序托管在http://localhost/testApp/mySite,并且我在mySite位置定义了js,css,tests和node_modules文件夹。 要运行测试,我必须转到http://localhost/testApps/mySite/node_modules/intern/client.html?config=mySite/tests/internmySite前置到配置位置。 同样,在我的配置中,我必须像这样定义我的套件:

suites: [
    'mySite/tests/suite1',
    'mySite/tests/suite2',
    'mySite/tests/suite3'
],

如果我不更改脚本标记以在client.html中使用不同的加载器并在node_modules中使用dojo的版本,那么我不需要有额外的路径(但是找不到esri库)。

我也发现了{{3}},在那个教程中他不必更改加载器。 不同之处在于,由于dojo 1.8.3中的错误,他正在使用intern-geezer,但我使用的是esri jsapi 3.7,因此有dojo 1.9.1而且我也不关心旧IE,所以宁愿不使用geezer if我不必。我确实用他的方式在intern.js中指定了我的包。

我确实拿了我的应用程序的副本并安装了intern-geezer而不是实习生,我能够运行测试。除了一个之外的所有人都通过了(我怀疑这是因为geizer中没有支持chai的东西)而且我根本不需要修改路径。 client.html的intern-geezer版本与实习生不同。它不使用require。

我是否有办法让esri jsapi实习工作而无需更改client.html中的加载程序?我想以自动方式从命令行运行。

1 个答案:

答案 0 :(得分:2)

从Intern 1.3开始,您可以在useLoader配置属性中指定替代加载器,例如来自Esri的加载器。对于Esri加载器,您可以使用:

// intern.js
define({
    /* … other configuration options … */
    useLoader: { 'host-browser': 'http://js.arcgis.com/3.7/' }
    /* … */
});

注意Esri使用旧的Dojo 1加载器;如果您要指定其他dojoConfig条件,例如async: true等,请在配置文件中添加dojoConfig全局对象:

define([], function () {
    this.dojoConfig = { async: 1 };

    return {
        /* … configuration … */
    };
});