2017-07-20 3 views
0

Ich habe Probleme mit ionischen 2/3 Testkomponenten/-seiten, die ionische Komponenten verwenden, die Overlays enthalten (Alert, Toast, Modal, ActionSheet). Wenn irgendein Code .present() auf den obigen Komponenten aufruft, erhalte ich den folgenden Fehler.Ionic 2/3 Mocking Toasts

Ich habe versucht, den entsprechenden Controller zu verspotten, aber das scheint nicht das Problem zu sein.

Jede Hilfe würde sehr geschätzt werden.

Seite-Code

constructor(public navCtrl: NavController, public navParams: NavParams, public viewCtrl: ViewController) {} 

save() { 
if (this.object.validate()) { 
    this.provider.save(this.object).then(() => { 
    }).catch((error) => { 
    console.log("Error saving object: ", error); 
    }); 
} else { 
    let toast = this.toastCtrl.create({ 
    message: 'All fields (except notes) must be filled before you can save a record', 
    duration: 3000, 
    dismissOnPageChange: true, 
    cssClass: "toastError" 
    });toast.present(); 
}} 

beforeEach(() => { 
    fixture = TestBed.createComponent(AddRecordPage); 
    comp = fixture.componentInstance; 
}); 

afterEach(() => { 
    fixture.destroy(); 
    comp = null; 
    de = null; 
    el = null; 
}); 

jeder Code, der diese Methode speichern Tests werden mit dem Fehler _getPortal scheitern

UPDATE: Ich habe auf die App-Objekt erscheint isoliert nach unten als das ist, wo _getPortal wirft der Fehler von; aber ich mein primäres App Objekt injiziert habe .....

+1

können Sie den Code einer Seite eingeben, auf der Sie eine dieser Komponenten aufrufen? –

+0

Ich kann die ganze Seite nicht aufgrund der Firmenrichtlinie posten, aber dies ist die allgemeine Methode, die fehlschlägt –

+0

Was ist 'comp'? – Duannx

Antwort

0

Sie haben Ihre App zu verspotten, um dieses Problem zu bekommen, ionische Winkel ein mock Sie verwenden können ... IE:

import { mockApp } from 'ionic-angular/util/mock-providers'; 

beforeEach(() => { 
    TestBed.configureTestingModule({ 
    {provide: App, useValue: mockApp()}, 
    }) 
    //etc 
} 

Bevor Sie Ihre Testbed-Komponente erstellen.