Как мне издеваться над классом без интерфейса, используя 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 ...
}