javascript - 使用 Jest 测试 jQuery 动画

标签 javascript jquery unit-testing jquery-animate jestjs

我想使用 Jest 测试框架测试 jQuery 动画状态,而无需等待它们完成。我尝试使用 jest.useFakeTimers 以及所有关联的计时器方法,但没有成功。

$(() => {
  const $button = $('button');
  const $ul = $('ul');
  
  $button.click(() => {
    $ul.slideToggle();
  });
  
  // Random Test - Not Jest
  $button.click();
  console.log("Visible", $ul.is(':visible') === true);
  $button.click();
  console.log("Hidden", $ul.is(':visible') === false);
});
ul { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button>Toggle</button>
<ul>
  <li>A</li>
  <li>B</li>
  <li>C</li>
</ul>

最佳答案

jQuery 提供了一个 fx.off 设置,该设置将强制动画自动跳转到最终状态。

beforeAll(() => {
  $.fx.off = true;
});

afterAll(() => {
  $.fx.off = false;
});

test('whatever you want', () => {
 // ....
})

文档在这里:https://api.jquery.com/jquery.fx.off/

关于javascript - 使用 Jest 测试 jQuery 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732869/

相关文章:

javascript - jsfiddle 上的 JS 提示错误 - 如何破译和调试

javascript - 访问包装 HOC 中组件的功能/状态

javascript - 当在屏幕上可见时,进度条应该开始填满

jquery - 如何使用 jquery/css 选择包含特定单词的 anchor

java - NoClassDefFoundError 与 AndroidJUnitRunner @java.util.Objects 与 MultiDex-App

java - 我是否需要创建工厂的测试版本以进行单元测试?

javascript - 我的粘性导航栏适用于 jsfiddle 但不能离线

javascript - Angular指令不获取父级设置的值

javascript - 单击我的自定义 div 时如何关闭移动菜单面板

c - 如何将单元测试添加到已建立的(自动工具)C 项目中