私はAngularFire 2認証を使用して、サンプル角度2アプリ用のユニットテストをセットアップしようとしているが、部品は非常に簡単です:私がやっているすべてはAngularFireでlogin
とlogout
方法の周りにラップしているユニットテストでAngularFire 2サービスを模擬する方法は?
import { Component } from '@angular/core';
import { AngularFire, AuthProviders } from 'angularfire2';
@Component({
moduleId: module.id,
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css']
})
export class AppComponent {
isLoggedIn: boolean;
constructor(public af: AngularFire) {
this.af.auth.subscribe(auth => {
if (auth) {
this.isLoggedIn = true;
} else {
this.isLoggedIn = false;
}
});
}
loginWithFacebook() {
this.af.auth.login({
provider: AuthProviders.Facebook
});
}
logout() {
this.af.auth.logout();
}
}
私はメソッドが呼び出されたかどうかをチェックするためにモックを使用して考えていたが、どこから始めれば私はわからないんだけど、私は私のspecファイルに次のようにやってみました:
import { provide } from '@angular/core';
import { AngularFire } from 'angularfire2';
import {
beforeEach, beforeEachProviders,
describe, xdescribe,
expect, it, xit,
async, inject
} from '@angular/core/testing';
import { AppComponent } from './app.component';
spyOn(AngularFire, 'auth');
beforeEachProviders(() => [
AppComponent,
AngularFire
]);
describe('App Component',() => {
it('should create the app',
inject([AppComponent], (app: AppComponent) => {
expect(app).toBeTruthy();
})
);
it('should log user in',
inject([AppComponent], (app: AppComponent) => {
expect(app.fb.auth.login).toHaveBeenCalled();
})
);
it('should log user out',
inject([AppComponent], (app: AppComponent) => {
expect(app.fb.auth.logout).toHaveBeenCalled();
})
);
});
私はどのようにわからないがlogin
とlogout
の方法は、 auth
のプロパティは、auth
と戻ってlogin
とlogout
メソッドを模擬する方法はありますか?このスニペットで
興味深い読者は、これを苦痛の少ないものにすることに関して[この問題](https://github.com/angular/angularfire2/issues/18)を追跡する必要があります。 – drewmoore