gpt4 book ai didi

react-native - 是否可以在排毒端到端测试期间模拟响应

转载 作者:行者123 更新时间:2023-12-05 05:54:16 26 4
gpt4 key购买 nike

我目前正在制作一个 react native 移动应用程序。我尝试测试我的登录按钮和字段,并想测试登录后移动到帐户屏幕的逻辑。

目前我得到这个作为我的测试用例:

import {clickAccountButton} from "./Navigation";
//API
import nock from "nock";
import {API_URL} from "@env";
import {axiosPost} from "../app/config/api";

jest.useFakeTimers();

describe('LoginScreen tests', function () {
beforeAll(async () => {
await device.launchApp();
});

it('should show the login screen', async () => {
await clickAccountButton();
await expect(element(by.id('loginScreen'))).toBeVisible();
});

it('should have the header', async () => {
await expect(element(by.id('header'))).toBeVisible();
});

it('should contain email and password form field', async () => {
await expect(element(by.id('email'))).toBeVisible();
await expect(element(by.id('password'))).toBeVisible();
});

it('should contain the login and forgotten password buttons', async () => {
await expect(element(by.id('loginSubmit'))).toBeVisible();
await expect(element(by.id('forgotPassword'))).toBeVisible();
});

it('should navigate to ForgotPassword onPress', async () => {
await element(by.id('forgotPassword')).tap();
await expect(element(by.id('forgotPasswordScreen'))).toBeVisible();
//Click the account button again to return to the login screen
await clickAccountButton();
});

it('should login successfully', async () => {
//Give the following response to the next httpRequest
nock(`${API_URL}`)
.post('/api/v1/auth/login')
.reply(200, {
loggedIn: true,
user: {
id: 1,
}
}).persist();

await element(by.id('email')).replaceText('hello@email.com');
await element(by.id('password')).replaceText('foobar');
await element(by.id('loginSubmit')).tap();


//Double check: Check if the view with testID 'welcomeScreen' is showing
//and the input field with testID 'email' is gone
await expect(element(by.id('accountScreen'))).toBeVisible();
await expect(element(by.id('email'))).not.toBeVisible();
});
});

我希望“应该成功登录”的情况能够成功,因为我正在拦截请求并且 nock 发送响应。但事实并非如此。相反,它只是对我不想使用的本地 API 服务器发出实际请求。因为我不想在测试中使用实际的登录详细信息。

有人知道怎么处理吗?提前致谢!

最佳答案

Jest 和被测应用程序在不同的进程中运行,因此正常的 Jest 模拟技术(例如 Nock)将不起作用。看看 mocking guide for Detox .

如果您的应用程序中有诸如 apiClient.js 之类的模块,那么您可以使用诸如 apiClient.mock.js 之类的东西来模拟它。

关于react-native - 是否可以在排毒端到端测试期间模拟响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69659754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com