angular - 带查询参数的 HttpTestingController.expectOne()

标签 angular testing karma-jasmine

我不熟悉使用 Jasmine/Karma 进行 Angular Testing 。我在使用 HttpTestingController 测试 Angular 服务时遇到问题。这是源代码的一部分:

getProfile(userName: string) {
    let config = {
      params: {
        user_id: "test"    
      }
    }
    return this.http
      .get(`https://api.github.com/users/${userName}`, config);
  }

使用 HttpTestingControllerexpectOne 调用服务时:

it('should add an Authorization header', () => {
let response;
userService.getProfile('blacksonic').subscribe(response => {
  expect(response).toBeTruthy();    });


const req = 
httpMock.expectOne({ method: 'GET', url:'https://api.github.com/users/blacksonic' });
                   });

我收到以下错误:

Error: Expected one matching request for criteria "Match method: GET, URL: https://api.github.com/users/blacksonic", found none.
at HttpClientTestingBackend.expectOne (./node_modules/@angular/common/fesm5/http/testing.js?:301:19)
at UserContext.eval (./src/app/Interceptors/Interceptor.spec.ts?:85:28)
at ZoneDelegate.invoke (./node_modules/zone.js/dist/zone.js?:387:26)
at ProxyZoneSpec.onInvoke (./node_modules/zone.js/dist/zone-testing.js?:287:39)
at ZoneDelegate.invoke (./node_modules/zone.js/dist/zone.js?:386:32)
at Zone.run (./node_modules/zone.js/dist/zone.js?:137:43)
at runInTestZone (./node_modules/zone.js/dist/zone-testing.js?:508:34)
at UserContext.eval (./node_modules/zone.js/dist/zone-testing.js?:523:20)

最佳答案

你正在传递一个参数。所以这样的事情会起作用:

const req = httpMock.expectOne(
 { method: 'GET', url:'https://api.github.com/users/blacksonic?user_id=test' });

关于angular - 带查询参数的 HttpTestingController.expectOne(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54771341/

相关文章:

angular - 使用 ngrx store 与 @Input 进行通信之间的简单通信

testing - 如何从 figwheel repl 的测试目录运行 cljs.test cases?

angular - 未找到转换选项中的模块 <rootDir>/node_modules/jest-preset-angular/preprocessor.js

unit-testing - 如何在 Angular2 中使用 karma-jasmine 对 ng2-translate 进行单元测试

testing - 如何在 JMeter 非 GUI 中禁用测试用例?

angular - 类型错误 : Cannot read property 'get' of undefined (Fixed conflicting imports not working)

javascript - Angular 2 : how do display character count on reactive form input

angular - 如果 "ng serve"正在运行,站点不会自动重新加载

Angular 等待多个 http 请求完成,然后触发最后一个

python - 如何使用 nosetests 测试函数在函数内被调用