有API测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有API测试相关的知识,希望对你有一定的参考价值。
我在应用程序的API层上编写了许多单元测试,但我在使用jest来模拟各种端点时遇到了麻烦。我没有这方面的经验,很多文章都没有帮助我的具体情况
我有特定的模块设置,使用Axios发出请求。这是我需要模拟的特定调用:
export async function ajax<T>(options: AxiosRequestConfig): Promise<T> {
options.baseURL = ApiConfig.currentContext.ApiPath;
options.headers = options.headers || {};
options.headers['Accept-Language'] = Locale.resolveCulture();
options.withCredentials = true;
try {
const response = await AXIOS_ADAPTER(options);
return response.data;
}
catch (error) {
throw new ApiError(error);
}
}
以下是我目前的测试结果:
import * as http from '../src/http';
import { account } from '../src/api/account';
describe('Account Credit Cards Test Suite', () => {
it('should get all saved credit cards in an account', async () => {
const spy = jest.spyOn(http, 'ajax');
const getAll = await account.creditCards.getAll();
expect(spy).toHaveBeenCalled();
expect(getAll).toBe(true);
});
});
这是一个初步的测试,看看我是否能让它工作,但不幸的是,resolveCulture调用依赖于window对象,因为它是一个Web应用程序。
我的问题是如何模拟ajax调用,以便我可以看到params传递给它的是什么,以便断言请求的行为符合预期。
如果您使用axios进行api通话。您可以使用axios-mock-adapter npm模块来模拟api调用。看一下我使用Jest和axios-mock-adapter测试axios api调用的下面的链接。
https://codesandbox.io/s/5vq2qv67on
https://github.com/ctimmerm/axios-mock-adapter
以上是关于有API测试的主要内容,如果未能解决你的问题,请参考以下文章
onActivityResult 未在 Android API 23 的片段上调用
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段
CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段