David
の回答は正しいトラックで私を得るのを助けました。私はIonic3/Angular4プロジェクトでionic-mocks(https://github.com/stonelasley/ionic-mocks)を使用するように修正しました。
export function createSpyObj (baseName: string, methodNames: string[]): { [key: string]: jasmine.Spy } {
const obj: any = {}
for (let i: number = 0; i < methodNames.length; i++) {
obj[methodNames[i]] = jasmine.createSpy(baseName,() => {})
}
return obj
}
は、その後、私は私のテスト/ specファイルでそのようにそれを使用することができるよ:私のテスト「ヘルパー」クラスで
は、私はこれを持っています。 (createSpyObj
を使用している)
{ provide: AlertController, useFactory:() => AlertControllerMock.instance() },
とイオン-モックは冗談と互換性があるまで、私は私が欲しいモックをコピーする必要があります:私は、問題のプロバイダを注入
class AlertMock {
public static instance(): any {
const instance: any = createSpyObj('Alert', ['present', 'dismiss'])
instance.present.and.returnValue(Promise.resolve())
instance.dismiss.and.returnValue(Promise.resolve())
return instance
}
}
class AlertControllerMock {
public static instance (alertMock?: AlertMock): any {
const instance: any = createSpyObj('AlertController', ['create'])
instance.create.and.returnValue(alertMock || AlertMock.instance())
return instance
}
}
母は、私が知っていますスパイを作成する方法:Pあなたの例は、スパイを添付する方法を示しています。ですから、私がやったことをするためには、4行を追加する必要があります。 1つではなく、コンテキストが古いプロジェクトから切り替えているので、500個のテストを書き直すのは良い考えではありません。 – David