ich in meinem init des Viewmodel haben den Folgecode:Mvvmcross Unittest für InvokeOnMainThread
public void Init(int id)
{
Task.Run(() => {
var loadedObjects = service.GetAllById(id);
InvokeOnMainThread(() => {
foreach(var objectA in loadedObjects)
{
Items.Add(objectA);
}
});
}
}
Meine Tests ist wie folgt:
[Test]
public void ShouldTest()
{
//For additional Setup of MvvmCross and registering of Dispatcher
Setup();
var viewModel = new ViewModelObjects();
viewModel.Init(1);
Assert.AreEqual(1, viewModel.Items.Count);
}
Als ich betreibe meine Test der assert läuft erst nach dass InvokeOnMainThread aufgerufen wird. Mein Gerät verfügt über einen Dispatcher (Aus: https://github.com/MvvmCross/MvvmCross/wiki/Testing)
- Grund für Task.Run ist Rest GUI gemacht werden muss.
- InvokeOnMainThread löst die ProperyChanged
- Tries wie (http://www.damirscorner.com/blog/posts/20140324-HandlingPropertyChangedEventInMvvmCrossViewModelUnitTests.html) funktionierte nicht
Jede Idee, wie ich die Einzelteile testen?
Sie haben Recht, jedoch wird es die App "sperren", bevor der Rest während des Wartens auf die Anfrage gerendert wird –
Nein, es würde die Anwendung nicht "sperren", da es 'async' ist – VMAtm