茉莉花测试服务

时间:2019-04-11 19:31:27

标签: angular jasmine rxjs5

我正在尝试使服务返回错误。

我正在使用rxjs _throw来模拟服务,然后测试是否已执行路由器导航功能。

但是,仅当HttpErrorResponse对象的值为errorMessage:“找不到会话”时,路由器导航功能才应触发

整个对象应为$('.select2-multi').select2({ tags: true, tokenSeparators: [","] }). val({!! json_encode($post->tags()->pluck('id')->toArray())!!}).trigger('change');

我以前使用过模拟服务,但在使其返回错误并表现出与组件中实际功能相同的功能时遇到了问题

组件功能:

{error: {error: errorMessage: 'Session not found'}}}

测试:

this.sub = this.addressService.getAddress(postcode.replace(/\s+/g, ''), houseNo)
          .subscribe((response: AddressResponse) => {

            if (response.getAddressFromPostcodeResponse &&
                response.getAddressFromPostcodeResponse.address &&
                response.getAddressFromPostcodeResponse.address.length > 0) {

                  this.yourAddressDetails.addressDetails.placeholder = 'Please select';
                  this.yourAddressDetails.addressDetails.options = this.addressService.setAddressDetails(response.getAddressFromPostcodeResponse.address);
            } else {
                  this.yourAddressDetails.addressDetails.options = [];
                  this._noPostcodeMatch = true;
            }
          }, error => {

                 this.yourAddressDetails.addressDetails.options = [];
                 this.httpPostcodeError = true;

            if (error.error && error.error.errorMessage === 'Session not found') {
                 this.router.navigate([`${this.journeyService.type}/${FeatureType.SessionTimeout}`]);
            }
         });

在组件代码it('should navigate to session-timeout component if no session.', () => { mockAddressService.getAddress.and.returnValue(_throw({error : { error: { errorMessage: 'Session not found' } }})); spyOn(component['router'], 'navigate'); expect(component['router'].navigate).toHaveBeenCalledWith(['quote/session-timeout']); }); 的那一部分中还有其他变量正在设置,我已经测试过是否已设置,但是没有设置,因此看来它不执行该语句。

我得到httpPostcodeError

0 个答案:

没有答案