Nunit 使用MvxNotifyPropertyChanged作为实现INotifyPropertyChanged的替代品是否安全?
为了让PropertyChanged在NUnit测试中触发,我必须设置ShouldAlwaysRaiseInpcOnUserInterfaceThread(false)。当我以后将该类用作ViewModel时,是否对此有任何影响?也许我应该在NUnit中设置一个用户界面线程?救命啊Nunit 使用MvxNotifyPropertyChanged作为实现INotifyPropertyChanged的替代品是否安全?,nunit,mvvmcross,inotifypropertychanged,Nunit,Mvvmcross,Inotifypropertychanged,为了让PropertyChanged在NUnit测试中触发,我必须设置ShouldAlwaysRaiseInpcOnUserInterfaceThread(false)。当我以后将该类用作ViewModel时,是否对此有任何影响?也许我应该在NUnit中设置一个用户界面线程?救命啊 public interface ISomething : INotifyPropertyChanged { } public class Something : MvxNotifyPropertyChanged,
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); }
}
}
默认情况下,MvvmCross会将
RaisePropertyChanged
之类的调用封送到UI线程上,以方便开发人员
如果要在单个对象上禁用此功能,可以调用shoulldalwaysraiseinpconuserinterfacethread(false)该对象的代码>(这是一个方法调用,而不是一个属性,因为ViewModel对象上的属性通常保留给INotifyPropertyChanged
使用)
如果希望在所有对象上默认禁用此选项,则可以使用Mvx.Resolve().AlwaysRaiseInpcOnUserInterfaceThread=false代码>
如果在测试期间,您希望为UI线程编组提供模拟实现,那么请参见例如N=29视频in,其中包含一些MockDispatcher
代码,默认情况下,MvvmCross将RaisePropertyChanged
之类的调用编组到UI线程上,以方便开发人员
如果要在单个对象上禁用此功能,可以调用shoulldalwaysraiseinpconuserinterfacethread(false)该对象的代码>(这是一个方法调用,而不是一个属性,因为ViewModel对象上的属性通常保留给INotifyPropertyChanged
使用)
如果希望在所有对象上默认禁用此选项,则可以使用Mvx.Resolve().AlwaysRaiseInpcOnUserInterfaceThread=false代码>
如果在测试过程中,您希望为UI线程编组提供模拟实现,那么请参见示例中的N=29视频,其中包含一些MockDispatcher
代码