我从这里抓了一些代码:http://web.archive.org/web/20090407010431/http://code.jesschadwick.com/Snippets/TestDatabase.cs。
这似乎是我对实际数据库设置测试的理想方案。
我是单元测试,模拟等的新手,到目前为止,我还没有理解为什么Initialize_executes_schema_if_provided
测试失败。
我尝试了代码的一些变体,在尝试初始化之前和之后都将Expect()
切换为Setup()
和Verify()
,但没有快乐。
ExecuteQuery方法是虚拟的,因此应该尽可能地工作 - 我无法理解为什么它无法验证它是否被调用。
任何指针都会非常有用。
谢谢大家。
答案 0 :(得分:1)
因为Initialize方法是虚拟的,所以Moq用它自己的方法实现(在这种情况下什么都不做)覆盖它。当调用db.Initialize()时,调用Moq的实现,而不是测试中的类,这意味着对ExecuteQuery的调用永远不会发生,这就是测试失败的原因。