感谢任何好的示例或网站参考,其中包含使用 Rhino Mocks 将 TDD 与 Model-View-Presenter 模式结合使用的有用信息。
我正在寻找的是关于以下几点
- 模拟什么(查看和演示者)
- 新的 AAA 语法
- 如何模拟 UI 行为?例如,如果在视图中输入“firstName”和“lastName”启用“提交”按钮,否则禁用它。这只是一个简单的例子。
- 最佳实践
非常感谢这个方向的任何输入。
提前致谢。
感谢任何好的示例或网站参考,其中包含使用 Rhino Mocks 将 TDD 与 Model-View-Presenter 模式结合使用的有用信息。
我正在寻找的是关于以下几点
非常感谢这个方向的任何输入。
提前致谢。
既然你还没有得到答案,我会尽我所能,用我目前所学的;
第一个问题;模拟什么 - 通常你会模拟你没有测试的所有东西。因此,如果您正在测试 ViewModel,您将模拟更改 ViewModel 的视图代码,以及填充/保留 ViewModel 的模拟模型代码。
第二个问题;AAA 语法 - AAA 语法最容易通过在您的测试方法中添加以下类型的注释来保持;
[Test]
public void whenUserFillsInFirstAndLastName_ThenUserCanSubmit()
{
// Arrange - code used to set-up what you are testing.
this.loadViewModelWithInitalContext(viewModel); // This is a helper that loads the viewmodel
// Act - code to fullfil the 'when' part in the test.
this.viewModel.FirstName = "test";
this.viewModel.LastName = "me";
// Assert - code to check state of object being tested. (here I am testing a property that I bind to the enabled state of a submit type button)
Assert.IsTrue(this.viewModel.UserCanSubmit);
}
第三个问题,模拟 UI 行为——通常你把它放在测试的 Act 部分(用于测试 ViewModel)。
最后一个问题,最佳实践,我的经验表明;
我推荐的参考资料;使用“你最喜欢的搜索引擎”来搜索你想做的事情,或者在这里发布你的测试示例并获得评论——这将帮助你改进你正在做的事情。
Phil Haack 对此有一篇非常好的博客文章。下载源代码并查看测试,它们的评论非常好。