TypeMock Isolator: WillThrow() выходит за границы модульного теста?

У меня есть два модульных теста, которые используют TypeMock Isolator, чтобы изолировать и подделать метод из SqlMembershipProvider asp.net.

В тесте 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 ответ

Решение

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

Другие вопросы по тегам