2013-03-05 4 views
2

У меня есть интерфейс, который мне нужно высмеять, который имеет свойства индексатора, который частично выглядит так.Как создать заглушку для индексированного свойства с помощью MS Fakes

public interface MyInterface{   
    string this[string name] {get;set;}; 
    string this[int index] {get;set;}; 
} 

Я хотел бы высмеять интерфейс таким образом, чтобы определенные значения для имени и индекса выше возвращали значения, которые я поставляю. Как я могу достичь этого с помощью Microsoft Fakes Framework?

ответ

5

Вы можете просто использовать Microsoft Fakes, чтобы заглушить эту функциональность в тесте. Щелкните правой кнопкой мыши на своей целевой сборке (проект, который включает определение интерфейса) и выберите добавить сборку подделок в ссылках вашего тестового проекта.

Поддельный сборник будет создан, «TargetAssembly.Fakes». В этой сборке у вас будет тип «StubMyInterface» с методами «ItemGetInt32», «ItemGetString», «ItemSetInt32String», «ItemSetStringString», которые являются реализациями заглушек методов get/set.

Вы можете использовать их в тесте следующим образом.

[TestMethod] 
public void MyInterfaceTest() 
{ 
    var stub = new StubMyInterface() 
    { 
     ItemGetInt32 = (x) => { return "teststring"; } 
    }; 

    MyInterface SUT = stub; 
    var result = SUT[47]; 

    Assert.AreEqual("teststring", result); 
} 
+0

Это должно быть отмечено как ответ, поскольку это правильно. Спасибо за подробный ответ Джошуа! – Erica