2

是否可以使用“dojo/text!” 在实习生功能测试中?

我可以将我的测试页面设置为 JSON 字符串,但理想情况下,我想将字符串外部化到文件中以便于编辑。我现在才刚刚开始实习,所以我只是在尝试什么是可能的,但这是我的测试代码的开始)。

这适用于使用的注释“testData”变量,但是当我尝试通过 dojo/text 提供相同的字符串时当前失败!陈述。

代码:

define([
    'intern!object',
    'intern/chai!assert',
    'dojo/text!./firstTestPageConfig.json',
    'require'
], function (registerSuite, assert, PageConfig, require) {
    registerSuite({
        name: 'firstTest',

        'greeting form': function () {

            var testData = PageConfig;
            // var testData = '{"widgets":[{"name":"alfresco/menus/AlfMenuBar","config":{"widgets":[{"name":"alfresco/menus/AlfMenuBarPopup","config":{"id":"DD1","label":"Drop-Down","iconClass":"alf-configure-icon","widgets":[{"name":"alfresco/menus/AlfMenuGroup","config":{"label":"Group 1","widgets":[{"name":"alfresco/menus/AlfMenuItem","config":{"label":"Item 1","iconClass":"alf-user-icon"}},{"name":"alfresco/menus/AlfMenuItem","config":{"label":"Item 2","iconClass":"alf-password-icon"}}]}},{"name":"alfresco/menus/AlfMenuGroup","config":{"label":"Group 2","widgets":[{"name":"alfresco/menus/AlfMenuItem","config":{"label":"Item 3","iconClass":"alf-help-icon"}}]}}]}}]}}]}';
            var testPage = 'http://localhost:8081/share/page/tp/ws/unittest?testdata=';

            return this.remote
                .get(testPage + testData)
                .waitForElementByCssSelector('.alfresco-core-Page.allWidgetsProcessed', 5000)
                .elementById('DD1')
                    .clickElement()
                    .end()

       }
   });
});

我得到的错误是:

/home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/dojo.js:742
                throw new Error('Failed to load module ' + module.mid + ' from ' + url + 
                          ^
Error: Failed to load module dojo/text from /home/dave/ScratchPad/ShareInternTests/dojo/text.js (parent: dojo/text!17!*)
at /home/dave/ScratchPad/ShareInternTests/node_modules/intern/node_modules/dojo/dojo.js:742:12
at fs.js:207:20
at Object.oncomplete (fs.js:107:15)

我尝试过使用 loader/package/map 配置,但没有任何成功。从错误消息中不清楚(至少对我来说)它是否找不到我传递给 dojo/text 的文件(但我已经尝试过完整路径和相对路径)或 Dojo 模块本身?

在我花更多时间在此之前,我只想确认我正在尝试的事情是可能的......但显然任何解决方案或示例将不胜感激!

非常感谢,戴夫

4

2 回答 2

1

对于您的具体错误:如果您想使用它,您需要为您自己的项目安装 Dojo。您正在尝试加载一个不存在的模块。您也可以尝试使用 Intern 附带的副本,通过从 加载模块intern/dojo,但如果您不了解加载此内部库的潜在警告,则不建议这样做。

在功能测试中使用dojo/text,一般来说: 目前不可能,除非您使用 Geezer 分支或明确使用 Dojo 1 加载器,因为该模块依赖于仅在 Node.js 中运行时由 Dojo 1 加载器公开的功能。完全通用的不同文本加载器模块可以工作,或者您可以intern/dojo/node!fs自己加载和加载文本。这将在未来得到解决。

于 2013-11-18T18:16:44.060 回答
0

我刚刚遇到了同样的问题,对我来说这很有效:

define([
     "dojo/_base/declare",
     "intern/dojo/text!/[PathToText]"
], function (declare, base) {

似乎 Sitepen 在此期间已将其包含在内...

于 2017-05-31T10:57:13.173 回答