【问题标题】:Run intern functional tests against static web app on localhost在 localhost 上针对静态 Web 应用运行实习生功能测试
【发布时间】:2016-11-08 15:41:39
【问题描述】:

我有一个静态网络应用程序。 Html、JS(requirejs 模块)和一些 CSS。 目前,“serverUrl”是通过一个属性模块设置的,我可以“要求”并使用它的值:

define({
    serverUrl: 'https://some.api/path/'
})

我有 Intern 设置,可以使用 src/index.html 作为入口点在浏览器中运行功能测试。

return this.remote
    .get(require.toUrl('src/index.html'))

鉴于serverUrl 在属性文件中是硬编码的,我正在尝试找到一种方法来针对serverUrl 指向localhost:1234/someFakeServer 的Web 应用程序运行测试,以便我可以测试错误场景等。

我在网上搜寻过,但找不到任何人和我做任何类似的事情,这让我觉得我做的事情显然是错误的。有使用配置模块的节点应用程序的解决方案,但是因为我从不“启动”我的网络应用程序 - 它只是文件,这些对我不起作用。

我想过一些解决方案,但不知道如何实现:

  • Intern 正在代理 :9000 上的文件,所以如果我能以某种方式使用另一个指向 localhost 的属性文件“构建”一个应用程序,那么一切都很好。但我不知道该怎么做——我看过 webpack 和类似的东西,但他们似乎没有做我想做的事。
  • 我查看了 Interns 'Setup' 配置项,它允许在测试开始之前运行一个函数 - 所以我想修改那里的属性文件,但似乎太老套了,不知道该怎么做放回去...

【问题讨论】:

  • 所以总体目标是让应用使用 Intern 配置的 serverUrl?
  • 不必由实习生配置,我只需要它可以根据环境和实习生进行配置,以便能够在任何上述环境中运行。

标签: javascript functional-testing intern


【解决方案1】:

假设 Intern 可以访问属性文件,您可以简单地让 Intern 加载属性文件并从中提取服务器 URL。如果您有多个潜在的属性文件,可以在实习生配置中设置正在使用的文件,或者作为自定义命令行变量传入(将用于在实习生配置中设置属性)。测试模块可以从 Intern 的 config 中获取属性文件的名称,然后加载相关文件。它可能看起来像这样(未经测试):

// intern config
define({
    // ...
    propertiesFile: 'whatever',
})

// test file
define([ 'intern', ... ], function (intern, ...) {
    registerSuite({
        // ...
        'a test': function () {
            var did = this.async();
            var remote = this.remote;
            require([
                intern.config.propertiesFile
            ], dfd.callback(function (props) {
                return remote.get(props.url)
                    .otherStuff
            });
        }
    });
});

【讨论】:

  • 我可能遗漏了一些东西——但不是实习生需要访问该属性——它是网络应用程序。 Intern 仍将使用 require.toUrl('src/index.html') 加载 Web 应用程序 - 它只是 Web 应用程序需要加载指向 localhost 的属性文件。
  • web 应用通常如何加载属性文件?
  • 它只是 Q 中描述的一个 require 模块。我已经设法通过基本上使用 NPM 运行一些 shell 命令来将文件从 /src/* 复制到 /dist/ 然后之后复制正确的属性文件。 "package:test": "cp -R ./src ./dist && cp config/local/properties.js ./dist/js/app"
  • 啊,所以您的目标只是在加载测试页面之前将配置文件放入应用程序目录?您可以让 Intern 在您的 intern.js 或您的测试文件中执行此操作(或 npm 脚本工作正常)。
猜你喜欢
  • 2015-06-18
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
相关资源
最近更新 更多