2016-09-19 11 views
0

現在、mvvmcrossを使用してxamaringで書かれたアンドロイド/ iosアプリケーションの単体テストを作成しようとしています。私はwikiの指示に従ってきたし、サービスがViewModelににこの方法を変更しようとしたとき、彼らはポイントにうまく動作します:ユニットテストでMvx.Resolveが失敗する

var viewDispatcher = Mvx.Resolve<IMvxViewDispatcher>(); 
viewDispatcher?.ShowViewModel(
new MvxViewModelRequest(typeof(HomeViewModel), null, null, MvxRequestedBy.Unknown)); 

テストがMvx.Resolve();との最初の行で失敗します。私は、これはモックIoCコンテナのインターフェイスを登録するにダウンしていると仮定します。この方法で呼び出されたときに

this.mockDispatcher = new MockDispatcher(); 
this.Ioc.RegisterSingleton<IMvxViewDispatcher>(this.mockDispatcher); 
this.Ioc.RegisterSingleton<IMvxMainThreadDispatcher(this.mockDispatcher); 

はそうMVXはその後、解決することはできません。このコードをテストすることができますか、ViewModelをサービスから変更する可能性はありますか?

答えて

4

あなたのAdditionalSetupは決して呼ばれないと思います。設定方法にSetUp属性を追加し、nunitを使用する場合はSetup()MvxIoCSupportingTestとし、それ以外の場合はそれぞれの属性をコールする必要があります。

public abstract class MvxTestBase : MvxIoCSupportingTest 
{ 
    protected MockDispatcher mockDispatcher; 

    protected override void AdditionalSetup() 
    { 
     this.mockDispatcher = new MockDispatcher(); 
     this.Ioc.RegisterSingleton<IMvxViewDispatcher>(this.mockDispatcher); 
     this.Ioc.RegisterSingleton<IMvxMainThreadDispatcher>(this.mockDispatcher); 
    } 

    [SetUp] 
    public virtual void SetupTest() 
    { 
     Setup(); 
    } 
} 

それともここに示したように、あなたは、各テストでそれを呼び出す:おそらく同等https://mvvmcross.com/docs/testing#section-test-class-declaration-and-setup

+0

デッドリンク、:https://www.mvvmcross.com/documentation/testing/testing/testing.html – hlovdal

関連する問題