使用测试运行器来测试操作 DOM 的函数

伊万

我最近发现了 Web 应用程序的端到端测试运行器。他们基本上通过运行 Web 浏览器从头到尾复制用户场景。例如有 NightwatchJS 和 TetsCafé。

还有单元测试运行器,如 Mocha、Jasmine、AVA、Jest、QUnit。如果我理解正确,它们允许通过将返回值与已知结果进行比较来测试函数等代码单元。

如果我正在构建一个涉及处理文档对象的 Web 应用程序,即附加和删除元素或更改它们的位置。我可以用上面的五个单元测试运行器来做这个吗?对我来说,端到端测试运行器的成本似乎更高:我不能像单元测试那样经常运行它们,因为它们只是需要更多的时间。

所以我的问题是,如何测试与 DOM 交互的函数?在 Jest 的 wiki 上找到了这个页面,它解释了如何测试 JQuery 代码。但我不知道如何测试我自己的函数(不涉及 jQuery)。

例如,我有一个附加新功能divbody文档,并返回新创建的div元素。

let add = function() {

  let div = createElement('div');
  div.innerHTML = '<div class="newElement">Hello World</div>';

  document.querySelector('body').appendChild(div)
  return div

}

我该如何测试:

  • add()返回一个HTMLElement的实例
  • DOM 中存在div具有类名元素newElement
伊万

我刚刚找到了测试一些代码的解决方案。我不认为它可以与 Jest 一起开箱即用。我们实际上可以使用document!

以下是文件:

添加.js:

let add = function() {

    let div = document.createElement('div');
    div.innerHTML = '<div class="newElement">Hello World</div>';

    document.querySelector('body').appendChild(div)
    return div
}

module.exports = add;

添加.test.js:

const add = require('./add');

test('add() returns a HTML element', () => {

    expect(add()).toBeInstanceOf(HTMLElement)

})


it('a() creates a div with class name newElement', () => {

    add()
    let textContent = document.querySelector('.newElement').textContent
    expect(textContent).toBe('Hello World')

})

在命令行中输入npm jest,它返回:

在此处输入图片说明

有人知道为什么会这样吗?JestJS 是否创建了一个空文档进行测试?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将函数名称传递给测试运行器?

来自分类Dev

使用JUNIT测试运行AsyncHttpClient

来自分类Dev

仅使用函数来引用DOM元素

来自分类Dev

使用AngularJS Ng-if函数的HTML DOM

来自分类Dev

使用R#测试运行器运行ReSharper插件测试

来自分类Dev

如何使用dotnet测试运行特定测试?

来自分类Dev

使用业力测试运行器进行多种聚合物元素测试

来自分类Dev

使用业力测试运行器进行多种聚合物元素测试

来自分类Dev

使用Python中的绿色测试运行器跳过测试

来自分类Dev

RSpec测试运行状况端点,无需控制器或操作

来自分类Dev

使用“ this”的javascript函数DOM事件侦听器

来自分类Dev

业力测试运行器-无法捕获Chrome

来自分类Dev

是否有PHPUnit的分层测试运行器?

来自分类Dev

多个HTML记者Karma测试运行器

来自分类Dev

业力测试运行器-无法捕获Chrome

来自分类Dev

测试运行器在重播期间找不到控件

来自分类Dev

无法使用量角器测试运行器加载应用

来自分类Dev

Javascript-测试DOM操作

来自分类Dev

Javascript-测试DOM操作

来自分类Dev

如何使用在测试运行时确定的类来创建特定GUI类的测试对象?

来自分类Dev

使用新的测试运行器获取当前脚本路径或当前项目路径

来自分类Dev

如何配置Pydev测试运行器以使用Docker

来自分类Dev

使用 Create React App Boilerplate 设置 AVA 测试运行器

来自分类Dev

如何使用Vividus工具同步测试运行?

来自分类Dev

使用Selenium IDE自动化测试运行

来自分类Dev

MAVEN:使用Maven测试运行多个Maven项目

来自分类Dev

着色golang测试运行输出

来自分类Dev

作为Maven测试运行

来自分类Dev

再现ScalaCheck测试运行

Related 相关文章

热门标签

归档