如何使用 Gulp、Jasmine 和 NodeJS 测试我的 jQuery 插件?

2024-02-23

我创建了一个简单的 jQuery 插件 https://github.com/yegor256/colorizejs/blob/master/gulpfile.js,它使用 jQuery 根据一些简单的规则修改 HTML。现在我需要测试它是否有效。我使用 Gulp 来实现自动化构建。我决定使用 Jasmine 进行单元测试。我的问题是如何从test.js并验证结果?我在构建服务器上安装了node.js。


Solution

Use jsdom模拟您的浏览器Jasmine单元测试。

Details

jsdom https://github.com/jsdom/jsdom#--------jsdom是“许多 Web 标准的纯 JavaScript 实现...与 Node.js 一起使用...模拟 Web 浏览器的足够子集,以用于测试和抓取真实世界的 Web 应用程序”。

jsdom已成为模拟浏览器的事实上的标准Node.js。它有每周 npm 下载量超过 200 万次 https://www.npmjs.com/package/jsdom并且,除其他外,自动包含为默认测试环境在Jest https://jestjs.io/docs/en/configuration.html#testenvironment-string.

jsdom提供了window需要初始化 jQuery、加载 jQuery 插件并使用它进行单元测试Jasmine从内部Node.js就像在浏览器中运行一样:


colorize-spec.js

const { JSDOM } = require('jsdom');
const { window } = new JSDOM();
global.$ = require('jquery')(window);
require('../src/colorize');

describe('colorize', () => {

  const div = $('<div/>');
  const settings = { 30: 'highest', 20: 'middle', 10: 'lowest' };

  it('should set the applicable class', () => {
    div.text('35').colorize(settings);
    expect(div.attr('class')).toBe('highest');

    div.text('25').colorize(settings);
    expect(div.attr('class')).toBe('middle');

    div.text('15').colorize(settings);
    expect(div.attr('class')).toBe('lowest');

    div.text('5').colorize(settings);
    expect(div.attr('class')).toBe('');
  });

});

我创建了一个拉取请求 https://github.com/yegor256/colorizejs/pull/2包括jsdom作为开发依赖项,颠簸node到 v8 中Travis CI,并包括这个初始单元测试。它通过了构建检查(包括此单元测试)并准备好合并。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Gulp、Jasmine 和 NodeJS 测试我的 jQuery 插件? 的相关文章

  • 检测 jqGrid 单元格中的复选框事件

    我正在探索jqGrid在我学习 Javascript 和 jQuery 的过程中 我成功地把checkbox在网格单元中 太棒了 这是我所拥有的 myTable jqGrid colModel name cb index cb width
  • zone.js:140未捕获类型错误:无法读取属性“删除”

    我是 kendo ui 的新手 我在小提琴中开发了原型 删除确认窗口在那里工作正常 但是当我集成到我的代码库中时 我收到错误 Cannot read property remove at the line pai to delete rem
  • 如何在 jQuery Mobile 中将标题设置为全屏模式?

    当我设置属性时data fullscreen true 对于标题 它工作正常 但当我收到一些事件时 我确实需要在运行时执行此操作 我试过这个 document ready function data role header attr dat
  • qTip2 jquery 与 asp.net 文本框

    我怎样才能实现jquery插件qTip2http craigsworks com projects qtip2 http craigsworks com projects qtip2 与 asp net 文本框 鼠标悬停时的优雅工具提示
  • 基本 jQuery 动画:省略号(三个点依次出现)

    我需要的 我需要一个动画省略号 一个点一个接一个地出现 动画需要循环播放 我想通过 jQuery 实现这一点 动画序列 Frame 1 等待您的选择 Frame 2 等待您的选择 Frame 3 等待您的选择 Frame 4 等待您的选择
  • jQuery DataTables:隐藏最后一行的“删除”按钮

    我有一个DataTable在某些情况下可以返回多个页面 返回的每一行都显示一个删除按钮 但我需要它在返回的最后一行上隐藏此按钮 无论是 1 pg 还是多个 因此不能在其中使用 CSS 我想学习如何实现这一点 因为DataTables对我来说
  • jQuery:向左滑动和向右滑动

    我见过slideUp and slideDown在 jQuery 中 左右滑动的功能 方式怎么样 您可以使用 jQuery UI 中的附加效果来做到这一点 详情请参阅此处 http docs jquery com UI Effects Sl
  • 更改 Jumbotron 不透明度并使其全宽,而不影响字体和按钮

    想问一下如何更改 Jumbotron 不透明度并使其全宽而不影响字体和按钮的不透明度 jumbotron special text align center background attachment scroll background i
  • 请求 jquery.min.map 文件时出现引用 404 错误

    现在 当浏览器请求 jquery min map 时 我会收到此 404 错误 有趣的是 我从未将此文件添加到我的解决方案中 谁能向我解释如何消除这个错误 我不知道该文件在哪里被引用 因为我没有添加对此文件的引用 Request URL h
  • 实际上并不向服务器提交任何内容的 HTML 表单(JavaScript 中的客户端处理)

    我有一个带有输入的 HTML 表单 它只会在 JavaScript 和 jQuery 中进行客户端处理 但实际上不会向服务器提交任何内容 在 HTML 中布局此类表单并编写 JavaScript 的正确方法是什么 该 JavaScript
  • 如何使用 jquery 检查输入 type="file" 是否有文件?

    我有一个文件上传控件
  • jQuery 的简单日历网格

    我发现的大多数可爱的日历组件对于我的简单要求来说都太复杂了 我需要显示月份网格 并指示是否已预订个别日期 我不需要每天处理多个活动 等等 我想我可以调整其中一个以始终将预订扩展为全天活动 读者对此有何建议 我的目标是显示住宿加早餐预订的日期
  • 在 jQuery 中获取 Json 数据

    没有一个清晰的示例解释如何尽可能简单地拉取 json 数据 我有一个有效的 json 我需要使用 jQuery 检索它 我的 json 输出如下 title blog entries items title Can Members of t
  • jQuery 中如何判断 JSON 对象是否为空

    我有以下 JSON meta limit 20 next null offset 0 previous null total count 0 objects 我对对象感兴趣 我想知道对象是否为空并显示警报 像这样的东西 success fu
  • Javascript“命名空间”和 jQuery AJAX

    我正在使用此处列出的建议 http www odetocode com articles 473 aspx http www odetocode com articles 473 aspx 使用模拟的JavaScript AJAX网络聊天系
  • jQuery Masonry 和 CSS3

    如何在保持砖石布局的同时将 CSS3 过渡与当前图像结合起来 这是我的html div img class bottom src images div
  • 按钮导致页面重新加载

    我在我的页面上使用 html 和 jquery 在我的 html 中 我有一个按钮 单击该按钮将触发一个功能 当页面加载时 我调用文档准备中的主函数 这是我的代码 div div
  • 加载 angularjs 路由后运行 javascript 代码

    我需要在 angularjs 加载路线后显示警报 显示警报的代码位于 angularjs 异步加载的视图中 视图加载后 我希望它能够运行 但它没有 我知道我可以广播并告诉它稍后运行等 但我需要一个更通用的解决方案 假设您正在谈论基于以下内容
  • 用于生成多色文本的 jQuery 插件,该文本可在悬停时改变颜色

    我想为各种链接生成多色文本 并从预先指定的颜色数组中为各个字母随机分配颜色 当将鼠标悬停在带有文本的 div 上时 颜色会发生变化 我正在考虑一个 jQuery 插件 脚本将是可行的方法 我想知道是否存在这样的插件或近似插件 Thanks
  • 自动更改 Twitter Bootstrap 选项卡

    我希望 Twitter Bootstrap 选项卡按时间顺序更改 我使用它们有点像旋转木马 我希望选项卡每 10 秒切换到下一个选项卡 这是一个例子 http library buffalo edu http library buffalo

随机推荐