相关疑难解决方法(0)

用玩笑嘲笑 jquery $.ajax

使用 jest 如何测试在我的 jQuery 应用程序中发出 ajax 请求并模拟其响应的函数?我的应用程序不是在 nodejs 中编译的,而是直接在浏览器中运行的。jest 站点https://github.com/facebook/jest/tree/master/examples/jquery上的示例假定 ajax 函数是一个单独的模块,并且整个应用程序都是用 webpack 之类的东西编译的。这是我的应用程序:

(function(root) {
    "use strict";
    // if environment is node then import jquery.
    var $ = (typeof module === "object" && module.exports) ? require('jquery') : jQuery;


    function displayUser() {

        var fetchCurrentUser = function (url) {
            var xhr = $.get(url);
            $.when(xhr)
                .done(function(data) {
                    greet(data);
                })
                .fail(function(jqXHR, textStatus, errorThrown) {
                    console.log(errorThrown);
                });
         };

        var greet = function(data) {
            $('#greet').text('Hello ' + data.name);
        }

        fetchCurrentUser('/my/api');

        return {
            fetchCurrentUser: …
Run Code Online (Sandbox Code Playgroud)

ajax jquery jestjs

6
推荐指数
2
解决办法
9884
查看次数

在玩笑中模拟 jQuery $() 和 $ 函数

我对 ES6 类中使用$.get(). 我能够嘲笑$.get()。我正在测试使用$.get()and的同一个类中的另一个函数$(data, ownerDocument).find(),但我无法弄清楚如何为该函数添加模拟$().find()

我是如何嘲笑的$.get()

const jQuery = require(path/to/jquery);
jest.mock(path/to/jquery);

describe("Description", () => {
  test("Test", () => {
    // multiple tests with different mocks of $.get, so clearing
    jQuery.get.mockClear();
    jQuery.get.mockImplementation((path) => path);
    // test function that uses $.get
  });
});
Run Code Online (Sandbox Code Playgroud)

根据笑话文档中的这一部分,我尝试使用 2 个参数版本为 jQuery 构造函数添加模拟jest.mock

// jest.mock(path/to/jquery);
jest.mock(path/to/jquery, () => {
  return jest.fn().mockImplementation(arg1, arg2) => {
    return {
      find: () => console.log('find'); // …
Run Code Online (Sandbox Code Playgroud)

jquery jestjs

5
推荐指数
1
解决办法
5700
查看次数

标签 统计

jestjs ×2

jquery ×2

ajax ×1