2015-06-23 9 views
7

У меня есть два модульных теста, которые используют TypeMock Isolator, чтобы изолировать и подделать метод из sqlMembershipProvider asp.net.TypeMock Isolator: WillThrow() истекает через границы единичных тестов?

В тесте 1 у меня есть:

 Isolate.WhenCalled(
      () => 
       Membership.CreateUser(...))) 
      .WithExactArguments() 
      .WillThrow(new Exception()); 

В тесте 2 у меня есть:

 Isolate.WhenCalled(
      () => 
       Membership.CreateUser(...))) 
      .WithExactArguments() 
      .WillReturn(new MembershipUser(...)); 

Когда я бегу каждый тест сам по себе оба они проходят успешно.

Когда я запускаю, оба теста тест номер 1 проходит первый и передает, затем тест номер 2 пробегов и не за исключением брошенного в тесте 1.

Почему бы WillThrow() инструкции в испытании 1 «кровоточить над» к тест 2? В конце концов, тест 2 явно определяет другое поведение - WillReturn()?

+1

Вы не указали полный фрагмент кода, поэтому я задам очевидный вопрос ... У вас есть тесты/класс с атрибутом «Изолированный», или вы вызываете «Isolator.Cleanup» для сброса поведения ? http://www.typemock.com/rule-missing-isolated-attribut – forsvarir

+0

@forsvarir Спасибо. При добавлении атрибута '[Isolated]' исправлена ​​проблема. Вы хотите опубликовать это как ответ, чтобы я мог его принять? – urig

ответ

6

Если поведение TypeMock кровотечение между тестами, то первое, что нужно проверить, - это очистка между тестами. Вы можете сделать это явно, вызвав Isolater.CleanUp() или используя preferred approach, который должен украсить либо методы тестирования, либо сам тест-класс с атрибутом [Isolated].