Как я могу проверить частные методы с закрытыми типами возврата? - PullRequest
0 голосов
/ 21 октября 2018

Я использую PrivateObject для тестирования приватных методов в одном из моих классов (, пожалуйста, нет лекций о том, как не тестировать приватные методы. Я решил это сделать. ) Затем вы можете использовать Assert.AreEqual() проверить возвращаемое значение вашего частного метода ... если возвращаемое значение является базовым встроенным типом.Но что, если мой закрытый метод возвращает значение, которое само по себе является закрытой структурой?

[TestMethod]
public void TestPrivateMethod1() {
    using (Interactors.Interactor interactor = new Interactors.Interactor()) {
        var priv = new PrivateObject(interactor);
        var privateType = priv.Invoke("myPrivateMethod", "foo");
        Assert.AreEqual(12, privateType.SomeValue);
    }
}

В этом случае приватная структура определяется внутри класса Interactors.Interactor и возвращается в переменную privateType,Но так как тестовый метод не знает об этом, я, очевидно, не могу скомпилировать код с privateType.SomeValue в нем.Как я могу проверить значения этого закрытого возвращаемого типа?

1 Ответ

0 голосов
/ 21 октября 2018

PrivateObject использует отражение для управления закрытым типом.Просто используйте его, чтобы получить ваше значение:

Assert.AreEqual(12, new PrivateObject(privateType).GetFieldOrProperty("SomeValue"));

Хотя это очень многословно.Я удивлен, что нет оболочки, использующей ключевое слово dynamic.

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