J'ai dans mon Init du viewmodel le code de suivi:Mvvmcross unittest pour InvokeOnMainThread
public void Init(int id)
{
Task.Run(() => {
var loadedObjects = service.GetAllById(id);
InvokeOnMainThread(() => {
foreach(var objectA in loadedObjects)
{
Items.Add(objectA);
}
});
}
}
Mes tests est comme ceci:
[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);
}
Quand je lance mon test assert est en cours d'exécution en premier après que InvokeOnMainThread est appelé. Mon unité a un répartiteur (De: https://github.com/MvvmCross/MvvmCross/wiki/Testing)
- Raison de Task.Run est le repos de l'interface graphique doit être rendu.
- InvokeOnMainThread déclenche les ProperyChanged
- Tries comme (http://www.damirscorner.com/blog/posts/20140324-HandlingPropertyChangedEventInMvvmCrossViewModelUnitTests.html) ne marchait pas
Toute idée comment je peux tester les produits?
Vous avez raison, mais il va "verrouiller" l'application avant de restituer le reste en attendant la demande. –
Non, cela ne verrouillerait pas l'application, car c'est "async" – VMAtm