テストしたいuserService.spec.ts
ファイルがあります。コードはこのようになります。 ADMIN_API_URL
を呼び出すget関数を呼び出します。指定されたファイルをテストしようとしましたが、タイトルに記載されているエラーが発生しました。私のser.service.spec.tsファイル。
describe('Service: User service', () => {
let httpMock: HttpTestingController;
let userService: UserService;
let url: string;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [
{ provide: AUTH_API_URL, useValue: 'https://auth.example.com/api/'
},
{ provide: SSO_API_URL, useValue: 'https://sso.example.com/auth/api/' },
{ provide: WIT_API_PROXY, useValue: 'https://wit.example.com/api/'},
{ provide: ADMIN_API_URL, useValue: 'https://admin.example.com/api/'},
{ provide: REALM, useValue: 'realm' },
Broadcaster,
Logger,
AuthenticationService,
HttpHandler,
UserService
]
});
httpMock = TestBed.get(HttpTestingController);
url = TestBed.get(ADMIN_API_URL);
userService = TestBed.get(UserService);
});
it('Get user by user name returns valid user', (done) => {
const testUser = [{
'attributes': {
'fullName': 'name',
'imageURL': '',
'username': 'myUser'
},
'id': 'userId',
'type': 'userType'
}];
userService.getUsersByName('name').subscribe((user) => {
expect(user[1].id).toEqual('userId');
done();
});
const req = httpMock.expectOne(request => request.method === 'GET'
&& request.url === `${url}search/users?q=name`);
req.flush({data: testUser});
});
});
頭に浮かんだことをすべてテストしてみましたが、コードのどこが悪いのかわかりません。ばかげた間違いをしているのでしょうか。
まず、AuthenticationService
などのサービスの依存関係を確認します。
作成したリクエストは、パイプラインでこれらの依存関係とさらに相互作用する可能性があり、前に拒否される AngularのHTTPクライアントに到達することさえあります!
このようにすると、リクエストはHttpTestingController
によって登録されず、テストでfound noneが取得されます。