我有一个快速的问题,我无法在有关 NMock2.0 的文档中弄清楚。
我有一个名为 Save() 的函数,我想模拟它。这需要一个字符串 ID 作为参数和一个小数作为值..
我知道我可以编写此代码以确保使用 2 个特定值调用 Save():
Expect.Once.On(dao) _
.Method("Save").With(New Object() {"foo", 1})
但这只有在“foo”和 1 被通过时才会通过。我确实可以控制值“foo”,但是对于第二个值,我不知道它会是什么;或者我不关心至少在这个特定的测试中测试它的价值。
我知道我可以写:
Expect.Once.On(dao) _
.Method("Save").WithAnyArguments()
但这将使我能够通过任何争论;所以如果 Save 界面发生变化,后来需要 5 个参数,我的测试仍然会通过。
我怎样才能确保它只需要 2 个参数,以及它们的正确类型?
也许更重要的是——写这样的单元测试太脆弱了吗?也许我应该对其进行编码以期望任何参数,以便每次我重构时都不必回来更改该行?我发现我使用大量模拟的测试用例非常脆弱,每当我重构时,我都必须更改它们......也许我在这里误用了模拟?对这些东西还是很陌生,所以非常感谢任何建议。