Как мне издеваться над классом без интерфейса, используя AutoMocker StructureMap?

Я большой сторонник тестирования и думаю, что создание дополнительного интерфейса для написания юнит-тестов - это небольшая цена. Я добавил автомакер структурной карты в набор тестов, и он, похоже, совершенно не умеет имитировать класс. У насмешника Rhino есть возможность издеваться над публичными классами, если публичные методы помечены как виртуальные

Я хотел бы избавиться от интерфейсов, если это возможно. Любая помощь приветствуется.

1 ответ

Прежде чем ответить на этот вопрос, я бы хотел отметить, что он полностью противоречит цели использования StructureMap, когда вы не используете интерфейсы. (Ну, не совсем, но мне не хватает того, что я использую его, чтобы спросить, почему вы в первую очередь решили использовать StructureMap...) Вы не продвинетесь слишком далеко в своих тестах без интерфейсов или если вы сделаете так, что вся ваша логика будет находиться в одном классе или в 20-30 классах, все они тесно связаны, что опять-таки лишает смысла использование StructureMap. Сказав, что я думаю, что это должно работать в ситуациях, когда вам нужно издеваться над конкретным классом

[Test]
public void TestMethod()
{
    // Arrange
    var service = new RhinoAutoMocker<BusinessRuleService>();
    service.PartialMockTheClassUnderTest();
    service.ClassUnderTest.Expect(x => x.VirtualMethodImTesting());

    // Act
    service.ClassUnderTest.CallableMethod();

    // Assert
    service.ClassUnderTest.VerifyAllExpectations();
    // ... or other stuff ...
}
Другие вопросы по тегам