【发布时间】:2010-01-15 11:00:29
【问题描述】:
我正在尝试测试这种行为
-- BLOGTableAdapter.GetBlogsByTitle(string title) 只被调用一次
-- 并用字符串调用 长度大于 1,
-- 它返回 BLOGDataTable 对象
[Test]
public void GetBlogsByBlogTitleTest4()
{
var mockAdapter = new Mock<BLOGTableAdapter>();
var mockTable = new Mock<BLOGDataTable>();
mockAdapter.Setup(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0))).Returns(mockTable.Object);
var blogBl = new BlogManagerBLL(mockAdapter.Object);
blogBl.GetBlogsByBlogTitle("Thanks for reading my question");
mockAdapter.VerifyAll();
mockAdapter.Verify(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0)), Times.Exactly(1));
}
当调用 GetBlogsByTitle(string title) 时,在数据访问层中说“BlogManagerBLL”
public BLOGDataTable GetBlogsByBlogTitle(string title)
{
return Adapter.GetBlogsByTitle(title);
}
如您所见,我使用两个单独的语句来完成这些检查
mockAdapter.Setup(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0))).Returns(mockTable.Object);
mockAdapter.Verify(x => x.GetBlogsByTitle(It.Is<string>(s => s.Length > 0)), Times.Exactly(1));
- 我怎样才能把它合二为一 声明?
- 我在测试正确的东西吗?
谢谢
【问题讨论】:
-
为什么要将它放在一个语句中?使用两个更清楚。
-
因为为了一次检查,这个方法被调用一次,所以我必须写第二个语句。我找不到任何方法来检查第一个。
-
不能在第一条语句中放入“Times.Exactly(1)”或类似的检查?
标签: c# unit-testing nunit installation moq