2013-12-10 58 views
1

爲了讓NUnit測試中的PropertyChanged觸發,我必須設置ShouldAlwaysRaiseInpcOnUserInterfaceThread(false)。當我稍後將該類用作ViewModel時,是否會對此產生影響?也許我應該在NUnit中設置一個用戶界面線程?幫幫我!使用MvxNotifyPropertyChanged作爲替代實現INotifyPropertyChanged是否安全?

public interface ISomething : INotifyPropertyChanged 
{ 
} 

public class Something : MvxNotifyPropertyChanged, ISomething 
{ 
    public Something() 
    { 
     ShouldAlwaysRaiseInpcOnUserInterfaceThread(false); 
    } 

    private int _num; 
    public int Num 
    { 
     get { return _num; } 
     set { if (_num != value) { _num = value; RaisePropertyChanged(() => Num); } 
    } 
} 

回答

1

默認情況下,乘警MvvmCross呼籲像RaisePropertyChanged到了開發商的方便的UI線程。

如果要禁用此單個對象,你可以調用ShouldAlwaysRaiseInpcOnUserInterfaceThread(false);爲該對象(這是一個方法調用,而不是財產上的視圖模型對象的屬性通常被保留,INotifyPropertyChanged使用)

如果您要在默認情況下對所有對象禁用此則可以使用Mvx.Resolve<IMvxSettings>().AlwaysRaiseInpcOnUserInterfaceThread = false;

如果在測試過程中要提供UI線程編組模擬實現,則見例如http://mvvmcross.blogspot.co.uk/的N = 29視頻 - 一些MockDispatcher代碼裏面https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-29-TipCalcTest/TipCalcTest.Tests

相關問題