WPF MVVM-模块化测试私有和公共方法?

原则上,如果我使用 MVVM 并展示 public ICommands, 我的代表应该公开或私人吗?
已邀请:

三叔

赞同来自:

我会让他们私下 - 他们不是部分
http://en.wikipedia.org/wiki/Public_interface
为此目的,您的课程是预期的。 public ICommand.

喜特乐

赞同来自:

就个人而言,我更喜欢私人方法,我会告诉你为什么。 你展览
http://msdn.microsoft.com/en-u ... .aspx
, 对我来说,它说消费的表现应该导致 CanExecute 在打电话之前 Execute. 如果他们不这样做,他们会反对 API 他们会在腿上射击自己,此时它不再在你手中。 就好像有人被反映出来建立一个重要的私人变量 null 并突破了你课堂的设计,因为这...他在他的腿上移动自己。 那么为什么要让成员关闭? 因为没有必要设置不应直接调用的成员。

原则上,当您是成员的单一测试时,您就不是单独的,而是如此 API 打算履行这些成员。 因此,您实际上不会测试成员,但此外,您将测试团队再次意味着必须在一定的订单中在一对中进行测试.:


if /CanExecute/
{
Execute;
}

莫问

赞同来自:

我有 MVVM 对于简单控制缩放按钮,减少和滑块显示该值。

如果你有测试 ICommand 和 INotifyPropertyChanged, 你可以假装 UnitTest:


[TestMethod]
public void TestViewModel3//
{
int min = -10;
int max = 10000;
int initVal = 50;
bool initState = false;

ToglledSliderModel model = new ToglledSliderModel/initState, initVal, min, max/;
ToglledSliderViewModel viewModel = new ToglledSliderViewModel//;
viewModel.Model = model;

int status = 567;
viewModel.PropertyChanged += delegate
{
status = 234;
};

for /int i = 1; i < 100; i++/
{
status = 567;
ICommand ic = viewModel.IncreaseValue;
ic.Execute/this/;
Thread.Sleep/2/;
Assert.AreEqual/status, 234/;
Assert.AreEqual/model.SliderValue, initVal + i/;
}
}


正如您所看到的,我测试该行为 INotifyPropertyChanged 和执行 ICommand

要回复问题请先登录注册