问题标签 [intern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
831 浏览

javascript - Dojo Intern:查找小部件或页面元素的最佳方法是什么?

http://theintern.io/:在功能测试中查找 dojo 生成的小部件 id 的最佳方法是什么,我应该使用webdriver“elementBy...”方法还是“dijit/registry”“dojo/query”

目前,我正在使用 dijit 注册表遍历所有小部件,直到通过标签值或属性等标识符找到我感兴趣的小部件。但要做到这一点,我只是在迭代这个registry.toArray()集合,感觉有点粗糙。

例如

更新

目前,正在测试的应用程序避免在其页面元素上设置 id,因为使用了多个相同类型的小部件。因此通过其他方式找到它们更难,但我已经通过上面的示例和使用 dojo/query 来管理它,当然我可以使用 xpath。上面的例子是一个粗略的例子,我可以把搜索范围缩小一点。

我只是想知道人们对查找页面元素有什么想法,我一直专注于小部件 ID,但查找任何属性都会有所帮助。例如,也许有一个 Intern 插件可以查找文本?

0 投票
1 回答
927 浏览

unit-testing - 如何模拟使用 dojo/node 加载的 Node.js 模块

我有一个应用程序,其服务器代码在 Node.js 上运行并使用 Dojo。我有一个config定义如下的模块:

为了能够对这个模块进行单元测试,我编写了两个模拟:一个用于本nconf机模块,一个用于dojoConfig. 这是测试:

我可以看到我的模拟dojoConfig已正确加载,但不是nconf模块的模拟。在 Intern 的网络广播中,Dylan 提到映射不考虑插件,有办法强制dojo/node模块加载 this nconfMock。你介意给我更多细节吗?

显然,这是冗长的,所以如果这仍然是一个常见的请求,我们将来可能会做一些事情让它变得更简单。

重要提示:如果没有映射dojo/nodeintern/node_modules/dojo/node,我config上面定义的初始模块的加载在 Intern 环境中会失败。映射在intern.js文件中完成。报告的错误是:

解决方案:正如下面 Colin Snover 所建议的,我现在使用 Mockery。我也不使用contextual require,只使用默认的。这是使用 Dojo 工具包 1.9.3 版的(简化的)解决方案。

谢谢, 多姆

0 投票
1 回答
237 浏览

javascript - 在 TheIntern 测试框架下加载 Dojo AMD 模块失败

我正在创建一个使用TheIntern测试框架的演示。当我尝试加载测试模块demo/intests/data时,我不断收到此错误:

但是,从浏览器访问这个文件是可以的,这里是服务器日志:

我尝试在demo/intests/data中创建一个尽可能简单的模块:

数据:

  • 应用程序根目录位于 $HOME/Projects/dojo_playground/tutorials/
  • 模块demo/intests/data位于 *$HOME/Projects/dojo_playground/tutorials/demo/intests/data.js*
  • 实习生配置: http: //pastebin.com/hyi55qp7
  • webserver 是 Nodejitsu 的 http-server,从 localhost 运行,webroot 是 $HOME/Projects
0 投票
2 回答
511 浏览

javascript - 将 Intern 与 Selenium 和动态 proxyUrl 结合使用

我的配置是由 grunt 和以下实习生配置(部分)启动的实习生测试环境:

问题是硬编码的my-ip。Selenium 网格和节点在不同的机器/各自的 ips 上运行,实习生的配置文件将与所有构建和测试环境一起签入。

如果我将 proxyUrl 留在本地主机上,硒节点将无法加载实习生测试的数据。

因此,对于所有开发人员测试,my-ip 将有所不同。我真的不希望每个人都将自己的 ip 输入到实习生配置中并意外签入配置,也不希望签入模板文件以供所有人更改。

不要误会我的意思。设置工作得很好,但必须输入硬编码的本地 ip,我个人认为这是气味。

也许它很容易参数化proxyURL,但我找不到任何资源:(

问候,

流卡普

0 投票
0 回答
126 浏览

unit-testing - 使用 dojo 1.7.2 项目的实习单元测试用例

按照实习生模块的教程并安装了 ie npm install intern --save-dev
将实习生节点模块复制到项目工作区,以便使用基于浏览器的实习生测试。
复制 node 模块中提供的测试 html 页面并设置包的路径,如上所述。
根据教程为其创建了测试小部件和测试用例。
最后用测试 html 页面对其进行了测试,但是由于我为包指定了 dojo 版本 1.7.2,因此存在类加载器问题。
如果尝试使用 1.9.1,它可以工作。实际的错误是它需要 1.7.2 版本不存在的模块,例如 dojo/promise。

我被这个版本冲突困住了,需要知道实习生是否与 Dojo 1.7.2 兼容。

否则有没有办法为旧版本的 Dojo 编写实习生测试用例?

帮忙看看这个!

0 投票
1 回答
114 浏览

intern - 未加载文件的覆盖率

对于测试期间未加载的文件,如何获得基本上 0% 的覆盖率报告。此功能可以帮助我识别我忘记为其编写测试的文件

0 投票
5 回答
688 浏览

intern - 实习生承诺超时

我正在与实习生一起编写一些功能测试,并遇到了以下文本部分...

“如果在测试超时(默认为 30 秒;设置 this.timeout 以更改值)内未履行承诺,测试也会失败。”

在...

https://github.com/theintern/intern/wiki/Writing-Tests-with-Intern#asynchronous-testing

如何设置功能测试的承诺超时?我试过直接在 promise 上调用 timeout() ,但这不是一个有效的方法。

我已经设置了各种 WD 超时(页面加载超时、隐式等待等),但我遇到了 promise 超时的问题。

0 投票
1 回答
650 浏览

intern - 通过 Selenium 运行测试时在 Intern 目录之外加载依赖项

我有一个项目,实习生单元测试应该位于与被测源代码不同的目录树中。有点像这样:

在 Intern 配置文件中,我定义了一个 AMD 包,它使用相对路径../src单元测试套件中访问。这是一个示例配置:

和一个匹配的单元测试套件

当直接在浏览器 (client.html) 或节点 (client.js) 中测试时,这可以正常工作。但是,当通过 Selenium 服务器(使用 runner.js)启动时,在由 Selenium 启动的浏览器中运行的 client.html 找不到外部依赖项。在上面的示例中,它尝试请求 ExternalDep at http://localhost:9000/__intern/src/ExternalDep.js,这是一个 404,因为该src目录不在实习生中。

我想如果我将 intern.js 放在测试和源代码的最高公共超级目录中,它会起作用。但是我们的项目目前的设置方式使其不切实际。有没有办法配置超出实习生配置文件位置的源,或者我只是犯了一个愚蠢的错误?

谢谢!

0 投票
1 回答
796 浏览

functional-testing - 参加实习生功能测试

我的问题是如何在功能测试中设置断点?实习生可以吗?我在 WebDriver 上本地运行测试用例,并拥有“调试器”;断点将简化我的测试用例开发。

execute(function () { debugger; }) 应该在浏览器中运行并作用于 'debugger;' 在其中,但它不会停止执行...

0 投票
2 回答
3813 浏览

google-chrome - 从命令行启动 Chrome 仿真

我使用 Google Chrome 和 Intern 运行自动化测试,我想知道是否有办法从 CLI 以仿真模式启动 Chrome 或使用特定标志来测试移动渲染。如果没有,您知道一个好的解决方法吗?

我可以直接将 Android 模拟器(来自 Android SDK)与 Selenium Webdriver apk 或移动 Chrome 一起使用,但测试大部分时间都会崩溃,模拟器没有响应,我必须重新启动它。此外,我需要在尽可能大的范围内进行测试,而不仅限于 Android 设备。桌面版 Chrome 更加稳定,即使测试失败,chrome 也会始终响应并且可以由 Intern 自动关闭。

我尝试了使用“--enable-touch-events”标志和自定义 userAgent 的解决方法,但它会产生奇怪的行为。也许其他一些标志会帮助我?

预先感谢您的回答。