【问题标题】:TypeMock Isolator: WillThrow() bleeds across unit test boundaries?TypeMock Isolator:WillThrow() 跨越单元测试边界?
【发布时间】: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] 属性解决了这个问题。您想将此作为答案发布,以便我接受吗?

标签: c# unit-testing isolation typemock typemock-isolator


【解决方案1】:

如果 TypeMock 行为在测试之间流血,那么首先要检查的是您在测试之间进行清理。您可以通过调用Isolater.CleanUp() 或使用preferred approach 来显式地做到这一点,这是用[Isolated] 属性装饰测试方法或测试类本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2016-09-08
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多