如何解决反应测试模拟实现一,使用模拟的功能
我正在实现用于firebase身份验证的模拟功能,我已经模拟了firebase模块,如下所示:
jest.mock("../../lib/api/firebase",() => {
return {
auth: {
createUserWithEmailAndPassword: jest.fn(() => {
return {
user: {
uid: "fakeuid",},};
}),signOut: jest.fn(),firestore: {
collection: jest.fn(() => ({
doc: jest.fn(() => ({
collection: jest.fn(() => ({
add: jest.fn(),})),set: jest.fn(),};
});
现在 createUserWithEmailAndPassword 返回用户uid,以在注册时伪造Firebase响应。我在测试中像这样使用它:
.
.
.
await wait(() => {
expect(auth.createUserWithEmailAndPassword).toHaveBeenCalled();
expect(history.location.pathname).toBe("/dashboard");
expect(getByText("You succesfully signed up!")).toBeInTheDocument();
});
它工作得很好,但是如果我希望返回的值对于一次测试却有所不同,该怎么办? 我看到有一个模拟实现,这似乎是正确的路径,但是我正在努力实施它,有什么帮助吗? 谢谢, F。
解决方法
您可以像这样使用 set.seed(123)
split <- initial_split(lepto,prop = 0.75,strata = 'composite_outcome')
lepto_train <- training(split)
letp_test <- testing(split)
rec2 <- recipe(composite_outcome ~ letargy + creatinine + cholestatic_syndrome + pallor + pulmonary_involvement +
reduced_diuresis + heart_rate + ast + hypotension + leucocytes,data = lepto_train) %>%
step_medianimpute(all_numeric()) %>%
step_BoxCox(all_numeric()) %>%
step_normalize(all_numeric()) %>%
step_corr(all_numeric(),threshold = 0.9) %>%
step_unknown(all_nominal(),-all_outcomes(),new_level = 'without_information') %>%
step_dummy(all_nominal(),-all_outcomes()) %>%
step_lincomb(all_predictors()) %>%
step_nzv(all_predictors())
## --- Model glm --------------------------------------- ##
model_glm <- logistic_reg(mode = 'classification') %>%
set_engine('glm')
## -- workflow ---------------------------------------- ##
work_glm <- workflow() %>%
add_recipe(rec2) %>%
add_model(model_glm)
## -------Fit --------------------------------------- ##
test_glm <- work_glm %>%
last_fit(split)
test_glm %>% collect_metrics()
final_glm <- work_glm %>%
fit(lepto_train)
final_glm %>%
pull_workflow_fit() %>%
tidypredict_fit()
model_logistic <- final_glm %>%
pull_workflow_fit()
:
mockReturnValueOnce
只需确保在测试中在调用auth.createUserWithEmailAndPassword
.mockReturnValueOnce(/* your desired return value here */)
之前模拟返回值 。
例如:
auth.createUserWithEmailAndPassword
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。