TypeMock Isolator:WillThrow() 跨越单元测试边界?
Posted
技术标签:
【中文标题】TypeMock Isolator:WillThrow() 跨越单元测试边界?【英文标题】:TypeMock Isolator: WillThrow() bleeds across unit test boundaries? 【发布时间】:2015-09-09 19:52:01 【问题描述】:我有两个单元测试使用TypeMock Isolator 来隔离和伪造来自asp.net 的SqlMembershipProvider 的方法。
在测试 1 中我有:
Isolate.WhenCalled(
() =>
Membership.CreateUser(...)))
.WithExactArguments()
.WillThrow(new Exception());
在测试 2 中我有:
Isolate.WhenCalled(
() =>
Membership.CreateUser(...)))
.WithExactArguments()
.WillReturn(new MembershipUser(...));
当我自己运行每个测试时,它们都成功通过了。
当我运行这两个测试时,测试 1 首先运行并通过,然后测试 2 运行并失败,并在测试 1 中抛出异常。
为什么测试 1 中的 WillThrow()
指令会“溢出”到测试 2?毕竟,测试 2 明确定义了不同的行为 - WillReturn()
?
【问题讨论】:
你还没有包含完整的 sn-p,所以我会问一个明显的问题......测试/类是否被标记为Isolated
属性,或者你打电话给 @987654328 @重置行为? typemock.com/rule-missing-isolated-attribut
@forsvarir 谢谢。添加[Isolated]
属性解决了这个问题。您想将此作为答案发布,以便我接受吗?
【参考方案1】:
如果 TypeMock 行为在测试之间流血,那么首先要检查的是您在测试之间进行清理。您可以通过调用Isolater.CleanUp()
或使用preferred approach 来显式地做到这一点,这是用[Isolated]
属性装饰测试方法或测试类本身。
【讨论】:
以上是关于TypeMock Isolator:WillThrow() 跨越单元测试边界?的主要内容,如果未能解决你的问题,请参考以下文章