【问题标题】:Intern 4 tests fail to load the Dojo2 loader实习生 4 测试无法加载 Dojo2 加载程序
【发布时间】:2018-05-15 15:56:07
【问题描述】:

我正在从实习生 3/requirejs 迁移到实习生 4/dojo2。我正在尝试运行测试,并且在功能检查后立即失败,然后加载我的测试并出现此错误:

Listening on localhost:9000 (ws 9001)
Tunnel started

‣ Created remote session chrome 66.0.3359.139 on XP (bc531663-f9f7-4cba-9038-6ab15808e9a0)
Suite chrome 66.0.3359.139 on XP FAILED
Error: Unable to load /..\node_modules\intern/loaders/dojo2.js
  at HTMLScriptElement.<anonymous>  <node_modules\intern\browser\remote.js:667:23264>
TOTAL: tested 1 platforms, 0 passed, 0 failed; suite error occurred

http://localhost:9000/__intern/browser/remote.html 的那个文件是 404ing,因为它试图从错误的路径中获取 dojo2.js。如果我将配置脚本中的dojo2 替换为__intern/loaders/dojo2.js,那么/node_modules/@dojo/loader/loader.js 上的值将是404。看起来它只是在寻找错误的路径,我能做些什么来解决这个问题吗?

实习生.json

{
    "loader": {
        "script": "dojo2",
        "config": {
            "waitSeconds": 60,
            "packages": [ {
                    "name": "objects",
                    "location": "objects"
                }, {
                    "name": "edits",
                    "location": "./",
                    "main": "edits"
                }, {
                    "name": "prepare",
                    "location": "TESTS",
                    "main": "prepare"
                }, {
                    "name": "common",
                    "location": "./",
                    "main": "common"
                }, {
                    "name": "socket",
                    "location": "http://localhost:2020/socket.io",
                    "main": "socket.io"
                }
            ]
        }
    },
    "suites": [
        "./functional/InitTests.js"
    ],
    "environments": [ {
            "browserName": "chrome"
        }
    ],
    "tunnelOptions": {
        "drivers": [
            "chrome"
        ],
        "port": 4444,
        "version": "3.4.0",
        "maxConcurrency": 1,
        "runnerClientReporter": {
            "writeHtml": false
        }
    },
    "tunnel": "null",
    "leaveRemoteOpen": true,
    "grep": ""
}

【问题讨论】:

    标签: javascript automated-tests intern


    【解决方案1】:

    有几个潜在的问题:

    • 你安装@dojo/loader了吗?加载程序脚本要求将关联的加载程序安装为 Intern 的对等方。
    • 使用 AMD 加载程序时,将测试指定为模块 ID 而不是文件名
    • ./functional/InitTests.js 实际上是否包含功能测试?如果是这样,则应在functionalSuites 下指定。

    【讨论】:

    • 问题是套件与功能套件。谢谢!那么suites 是否仅适用于单元测试套件?
    • 是的,suites 用于单元测试,functionalSuites 用于功能测试。这两种类型在编写时看起来非常相似,但只有功能测试被赋予了remote 对象,并且功能测试总是在 Node 环境中运行。
    • 如果我像在 OP 中一样将单元测试路径放在 suites 数组中,那应该按原样工作吗?通过这样做,我现在在单元测试中遇到了同样的问题。
    • suites 用于单元测试,functionalSuites 用于功能测试。
    • 啊,抱歉,我的意思是使用 webdrivers 运行单元测试,而不是通过访问浏览器运行程序。
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多