2012-10-22 90 views
6

我正在尝试创建一个WPF MVVM视图模型,该模型注入了一个依赖项System.Timing.Timer,并且希望使用Moq测试视图模型。用Moq嘲笑C#计时器

我写了一个包含Timer类的薄包装,它有一个接口ITimer,但我不确定是否真正测试计时器对类的贡献的最佳方法。有没有一种很好的方法来“强制”模拟已过的事件?其他人有更好的技术吗?

+3

看看这个[问题](http://stackoverflow.com/questions/11495830/unit-testing-a-class-that-uses-a-timer)和这个[问题](http:// stackoverflow.com/questions/8940982/how-can-i-run-the-event-handler-assigned-to-mock) –

+0

谢谢,我为这类事情做了一些Google搜索,但集中了我对事件的查询一般而不是定时器,并且找不到很多好的结果。 –

回答

3

您应该在isolation中测试您的代码。否则,你不知道你的代码是否像预期那样工作,或者在外部依赖中有一些副作用。因此,为外部资源(配置文件,定时器等)创建可嘲讽包装是将SUT与外部代码分开的唯一方法。

+0

我知道所有关于隔离的概念,因此我围绕'Timer'写了一个锡可嘲弄的包装。我更专注于嘲笑事件的技巧。 Ufuk的评论似乎是我正在寻找的。 –

+0

举办活动只是简单地通过模拟对您的模型进行一些操作。我没有看到任何奇怪的东西。 –