Макет вложенного интерфейса - PullRequest
2 голосов
/ 10 ноября 2011

Я хочу проверить, что метод вызывается на внутреннем интерфейсе, как бы я сделал это с moq?Учитывая следующий пример, я ожидаю, что Z.Joy () вызовет Ix.Method ().

interface Ix { void Method(); }
interface Iy<T> {}
class Z {
    public Z (Iy<Ix> y) {}
    public void Joy() {}
}

[TestClass]
public class Test {
    [TestMethod]
    public void ATest() {
        var x = new Mock<Ix>();
        var y = new Moxk<Iy<Ix>>(); // how can I pass x.Object?
        var z = new Z(y.Object);

        x.Verify(() => x.Method());

        z.Joy();
    }
}

1 Ответ

4 голосов
/ 10 ноября 2011

Поскольку вы издеваетесь над интерфейсом Iy<T>, вам придется поместить ожидание или настройку методов в этот поддельный интерфейс, которые имеют дело с Ix.Я ожидаю, что у вас есть что-то вроде этого в Iy<T>.

interface Iy<T>
{
     T SomeMethod();
}

Так что здесь вы можете.

y.Setup(x => x.SomeMethod()).Returns(x.Object));

и где-то в z.Joy() вы позвоните x.SomeMethod()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...