我有一个带out参数的方法,可能会引发异常。我想用Rhino模拟测试这种行为,所以我做:
Expect.Call(() => mymethod(null, null, out integer1, out integer2))
.IgnoreArguments().OutRef(1, 2).Throw(new Exception());
但很明显,在out参数初始化之前抛出了异常。
我做错了什么或是正常的犀牛行为? 你会如何解决这个问题?
答案 0 :(得分:0)
这可能是Rhino.Mocks中的一个错误。我认为使用.Throw()
方法说“当我调用此方法时,抛出此异常”。这就是全部 - 抛出异常。
我会重新设计代码,以免期望out
变量被初始化 AND 抛出异常。当我在try/catch
块中包装一个方法并捕获一个异常时,我认为该方法可能在任何地方都已经死亡,而且我没有对可能已完成(或未完成)的工作做出任何假设。
也许代码可以分成两种方法?