【发布时间】:2012-04-10 10:53:00
【问题描述】:
我开始编写单元测试并实现了一个很好的存储库模式/起订量,允许我在不使用“真实”数据的情况下测试我的功能。到目前为止一切顺利.. 但是..
在“帖子”IPostRepository 的存储库界面中,我有一个功能:
Post getPostByID(int id);
我希望能够从我的 Test 课程中对此进行测试,但无法确定如何进行。
到目前为止,我正在使用这种模式进行测试:
[SetUp]
public void Setup()
{
mock = new Mock<IPostRepository>();
}
[Test]
public void someTest()
{
populate(10); //This populates the mock with 10 fake entries
//do test here
}
在我的函数“someTest”中,我希望能够调用/测试函数GetPostById。我可以用mock.object.getpostbyid 找到函数,但“对象”为空。
任何帮助将不胜感激:)
iPostRepository:
public interface IPostRepository
{
IQueryable<Post> Posts {get;}
void SavePost(Post post);
Post getPostByID(int id);
}
【问题讨论】:
-
populate(10)如何创建数据?在模拟的object属性上获得空引用异常通常意味着模拟没有被实例化,但看起来你正在[SetUp]中这样做。确保[SetUp]按预期运行可能是值得的。 -
哦,我想我现在明白了——我读到“object”是空的,我以为你指的是 Mock 的
object属性。我认为 Marnix 有你的答案 -
@ataddeini 是的,填充只是迭代,添加到模拟中以节省我在每个测试用例中编写相同的 10 行!
标签: asp.net-mvc-3 unit-testing testing moq