http - 如何在 Protractor 中处理 zone-evergreen.js HTTP 400 错误请求?
问题描述
我正在使用 Angular11/Protractor 编写一个测试,它填写一个注册表单,然后将其提交到后端服务器。测试预计服务器将响应 HTTP 400 错误请求错误“电子邮件已存在”。(这是后端的正确行为)
但是测试总是会失败,因为 angular 会从 zone-evergreen.js 抛出一个我似乎无法捕捉到的错误:
zone-evergreen.js:2845 POST http://localhost:3000/users/register 400 (Bad Request)
我怎样才能捕捉到该错误或防止它干扰这个端到端测试?
这是量角器代码:
it('it should not allow the user to register with same email address', async () => {
// navigate to registration page by clicking on the "sign up" button
element(by.css('a[routerLink="/auth/registration"]')).click();
await browser.wait(EC.urlContains('http://localhost:4200/auth/registration'))
expect(browser.getCurrentUrl()).toEqual('http://localhost:4200/auth/registration');
// fill up the form again
page.getRegisterFullNameInput().sendKeys(accountFullName)
page.getRegisterEmailInput().sendKeys(accountEmail)
page.getRegisterPasswordInput().sendKeys(accountPassword)
page.getRegisterRepeatPasswordInput().sendKeys(accountPassword)
page.getTermsAndConditionsCheckBox().click()
// submit the form
page.getRegisterSubmitButton().click()
// wait for toastr, should throw an error
await browser.wait(EC.visibilityOf(element(by.css('.toast-message'))));
expect(page.getToastrMessage()).toContain('Email already registered')
})
Chrome 中的全栈跟踪:
scheduleTask @ zone-evergreen.js:2845
scheduleTask @ zone-evergreen.js:385
onScheduleTask @ zone-evergreen.js:272
scheduleTask @ zone-evergreen.js:378
scheduleTask @ zone-evergreen.js:210
scheduleMacroTask @ zone-evergreen.js:233
scheduleMacroTaskWithCurrentZone @ zone-evergreen.js:1134
(anonymous) @ zone-evergreen.js:2878
proto.<computed> @ zone-evergreen.js:1449
(anonymous) @ http.js:1785
_trySubscribe @ Observable.js:42
subscribe @ Observable.js:28
call @ tap.js:16
subscribe @ Observable.js:23
call @ catchError.js:14
subscribe @ Observable.js:23
innerSubscribe @ innerSubscribe.js:67
_innerSub @ mergeMap.js:57
_tryNext @ mergeMap.js:51
_next @ mergeMap.js:34
next @ Subscriber.js:49
(anonymous) @ subscribeToArray.js:3
_trySubscribe @ Observable.js:42
subscribe @ Observable.js:28
call @ mergeMap.js:19
subscribe @ Observable.js:23
call @ filter.js:13
subscribe @ Observable.js:23
call @ map.js:16
subscribe @ Observable.js:23
call @ map.js:16
subscribe @ Observable.js:23
call @ switchMap.js:15
subscribe @ Observable.js:23
call @ catchError.js:14
subscribe @ Observable.js:23
call @ finalize.js:11
subscribe @ Observable.js:23
call @ take.js:22
subscribe @ Observable.js:23
call @ throwIfEmpty.js:13
subscribe @ Observable.js:23
submit @ registration.component.ts:118
RegistrationComponent_Template_form_ngSubmit_1_listener @ registration.component.html:9
executeListenerWithErrorHandling @ core.js:14994
wrapListenerIn_markDirtyAndPreventDefault @ core.js:15029
schedulerFn @ core.js:25687
__tryOrUnsub @ Subscriber.js:183
next @ Subscriber.js:122
_next @ Subscriber.js:72
next @ Subscriber.js:49
next @ Subject.js:39
emit @ core.js:25656
onSubmit @ forms.js:5719
FormGroupDirective_submit_HostBindingHandler @ forms.js:5774
executeListenerWithErrorHandling @ core.js:14994
wrapListenerIn_markDirtyAndPreventDefault @ core.js:15029
(anonymous) @ platform-browser.js:582
invokeTask @ zone-evergreen.js:399
onInvokeTask @ core.js:28289
invokeTask @ zone-evergreen.js:398
runTask @ zone-evergreen.js:167
invokeTask @ zone-evergreen.js:480
invokeTask @ zone-evergreen.js:1621
globalZoneAwareCallback @ zone-evergreen.js:1647
解决方案
推荐阅读
- mysql - 在这种情况下如何使用 SQL 的滞后功能?
- python - 如何去除power bi中Python图的顶部和底部空白?
- python - 如何使用 Robot Framework 按行和列更新 CSV 文件
- python - AttributeError:模块'scipy.interpolate'没有属性'spline'
- c++ - 带空格的字符串/字符输入
- java - Java用String实例化一个类
- java - 将 Elasticsearch JSON 响应转换为 Elasticsearch BulkResponse
- python - Smtp 问题,例如 'smtplib.SMTPConnectError: (-1, b'Microsoft Exchange IMAP4 服务已准备好。')'
- django - AWS Cognito 调用上的 Zappa Django Rest Framework API 超时
- python - 为什么链接器在任何地方都没有指定时寻找 python36_d.lib?