在这种情况下,最好地测试axios功能的正确方法是什么?

湿婆乔拉

我已经写了一个基本的测试用例来测试我的axios功能。测试用例失败。我正在尝试测试axios调用,该调用使我得到一个json。我格式化该数据并解决Promise函数。开玩笑说错误,TypeError: Cannot read property 'then' of undefined

`

TypeError:无法读取未定义的属性“ then”

  67 |                 'Authorization': `Bearer ${accessToken}`,
  68 |             },
> 69 |         }).then((response: any): any => {
     |           ^
  70 |             if (response.statusText === "OK") {
  71 |                 return Promise.resolve(response.data);
  72 |             }

`

嘲笑/axios.ts

export default {
    get: jest.fn(() => Promise.resolve()),
    request: jest.fn(() => Promise.resolve())
};

// libHelper.tsx

export default class libHelper{
    constructor() {
        // parameters initialization
        }
    }

    public fetchMsGraph = (accessToken: string): Promise<GraphData> => {
        return axios.get(Constants.someURL, {
            headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${accessToken}`,
            },
        }).then((response: any): any => {
            if (response.statusText === "OK") {
                return Promise.resolve(response.data);
            }
            else {
                return Promise.reject(Error(`API Response not OK`));
            }
        }).catch((err: any): any => Promise.reject(Error(`Fetch API Error ${err}`)));

    }

// libHelper-tests.tsx

import libHelper from "../Scripts/libHelper";
import axios from "../__mocks__/axios";
import { UserDataGen1, Data } from "../Scripts/interfaces";

describe("", (): void => {

    test("basic test", () => {
        let msalobject: MsalHelper = new MsalHelper();
        expect(msalobject).toBeInstanceOf(MsalHelper);
    });

    test("not so basic", async () => {
        const resp: UserDataGen1 = {
            idp: "string",
            memberName: "string",
            lastName: "string",
            firstName: "string",
            cid: "string",
            authenticatedState: "string",
            picture: "string"
        }
        axios.get.mockImplementation(() => { Promise.resolve(resp); });

        let libObject: libHelper = new libHelper();
        const rand: Data = await libObject.fetchAPP("asd");

        expect(rand).toEqual(resp);
    });
});
湿婆乔拉

这就是它通过的原因

import mockAxios from "../__mocks__/axios";
const data: UserDataGen1 = {
            idp: "string",
            memberName: "string",
            lastName: "string",
            firstName: "string",
            cid: "string",
            authenticatedState: "string",
            picture: "string"
        }
    const resp: any = {
            data: data,
            status: 200,
            statusText: "OK",        
    }

    mockAxios.get.mockImplementation((url: string) =>{
                console.log(url);
                return Promise.resolve(resp);
            });

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在这种情况下,最好的 Pandas 应用/循环方法是什么?

jQuery:在这种情况下,.on()的正确用法是什么?

在这种情况下如何最好地使用docker

Angular:在这种特殊情况下使用ng-change的正确方法是什么?

JavaScript,在这种特殊情况下立即调用的功能是什么?

在这种情况下执行git-rebase的正确命令是什么?

在这种情况下,AVG()函数的正确用法是什么?

在这种情况下,方括号的正确javascript术语是什么?

> =在这种情况下是什么意思

在这种情况下 res 是什么意思?

在这种情况下,语法[]是什么意思?

在这种情况下,`typedef`是什么意思

在这种情况下,svn更新的流程是什么?

在这种情况下,括号是什么意思?

在这种情况下,运算符“(> =)”是什么?

C ++:在这种情况下引用的优点是什么?

在这种情况下,熵是什么意思?

在这种情况下setViewControllers的目的是什么

在这种情况下,什么更好:扩展还是功能?

在这种情况下使用Redis池的正确方法

在这种情况下,如何最好地解决函数比较TypeError?

在这种情况下,处理AngularJS中事件的最佳方法是什么?

mysql:在这种情况下索引多列的最佳方法是什么

在这种情况下选择不同的orderID的快速方法是什么?

在这种情况下,绕过“ MemoryError”的最佳方法是什么?

在这种情况下使用索引匹配的最佳方法是什么?

在这种情况下,避免混乱循环的最佳方法是什么?

在这种情况下,将undef传递给DBI的do方法的目的是什么?

在这种情况下,将分支与GIT一起使用的最佳方法是什么