2016-08-10 7 views
1

Ich muss das Verhalten einer Schaltfläche über einen Komponententest innerhalb einer Android-und einer iOS-Ansicht bestätigen.Unit testing a MvvmCross.Droid.View

Für die Android-Ansicht; Ich habe eine Sicht, die von MvxActivity erbt. Meine iOS-Ansicht erbt von MvxViewController.

Wenn wir die Android-Ansicht zum Beispiel nehmen; Ich habe das wie so gebunden Klick-Ereignis der Schaltfläche:

_buttonUseVideo.Click += DisableButton; 

Und der Event-Handler sieht wie folgt aus:

private void DisableButton(object sender, EventArgs eventArgs) 
{ 
    _button.Enabled = false; 
    _localViewModel.Close(); 
} 

ich nicht eine Abnahmeprüfung verwenden kann, da das Formular sofort geschlossen, nachdem ich auf die Schaltfläche klicken. Ist es möglich, dieses Verhalten über einen Komponententest zu testen?

Antwort

1

Ich bin mir nicht sicher, ob ein UnitTest die richtige Antwort für Sie ist, zumindest wenn Sie die Implementierung auf diese Weise beibehalten möchten.

Wenn Sie UI-Elemente testen, sollten Sie eine UITest für Xamarin verwenden (https://developer.xamarin.com/guides/testcloud/uitest/), wo man Dinge wie diese und lassen Sie den Test machen alle benötigten Benutzer-Interaktionen im Vorfeld konnte:

var isDrawerOpen = app.Query(d => d.Id("navigation_drawer").Invoke("isDrawerOpen", 3)); 
    Assert.True((bool) isDrawerOpen[0]); 

Eine weitere Option wäre, den eventhandler und die _button.Enabled = false zu entfernen, um es durch MVVMCross Bindungen zu ersetzen. Sie können also die Ansicht vollständig ignorieren und einfach den Unittest für Ihr Ansichtsmodell verwenden.

Obwohl es nicht sinnvoll wäre zu testen, ob die Schaltfläche deaktiviert ist, bevor das ViewModel meiner Meinung nach geschlossen ist. Oder passiert mehr mit dem Button oder dem viewmodel.close(), das Sie nicht mit uns geteilt haben?