Перемешивание ConfigurationManager.AppSettings с JustMock - PullRequest
3 голосов
/ 13 декабря 2011

Следуя указаниям по адресу: http://www.telerik.com/help/justmock/advanced-usage-static-mocking.html

Мне не удалось издеваться над ConfigurationManager.AppSettings.Вот код, который я использую ...

[TestMethod]
public void my_test()
{
    // Arrange
    var appSettings = new NameValueCollection {
        { "test1", "one" }
    };

    Mock.Arrange(() => ConfigurationManager.AppSettings)
        .Returns(appSettings)
        .MustBeCalled();

    // Act
    var test1 = ConfigurationManager.AppSettings["test1"];

    // Assert
    Assert.AreEqual("one", test1);
}

Это ошибка, которую я получаю.

Ошибка Assert.AreEqual.Ожидаемая :.Фактический: <(нуль)>.

Можно ли издеваться над этим объектом?

[править] Я также использую пробную версию.

Ответы [ 2 ]

3 голосов
/ 13 декабря 2011

Я только что попробовал ваш тест, и он работал как ожидалось:

// Arrange 
var appSettings = new NameValueCollection { { "test1", "one" } };

Mock.Arrange(() => ConfigurationManager.AppSettings)
    .Returns(appSettings)
    .MustBeCalled();

// Act 
var test1 = ConfigurationManager.AppSettings["test1"];

// Assert 
Assert.AreEqual("one", test1);

Здесь, пожалуйста, убедитесь, что Configuration.AppSettings еще не вызван в каком-то статическом конструкторе вашего проекта.

Здесь следует отметить, что .net профилировщик перехватывает во время OnJITCompilationStarted , и это срабатывает только один раз для данного члена.

Кроме того, убедитесь, что ваш профилировщик настроен правильно и установлен плагин JM для VS. Вы можете проверить, включен ли профилировщик с помощью Mock.IsProfilerEnabled .

Наконец, вам, как правило, не нужно использовать Mock.SetupStatic (#TARGET_TYPE #) , если вы не выполняете строгий макет или не хотите подделывать статический конструктор для данного типа. Когда вы будете делать Mock.Arrange , он автоматически установит перехватчики, если это еще не сделано.

[Примечание: я использовал последнюю версию]

0 голосов
/ 14 декабря 2011

источник: http://www.telerik.com/community/forums/justmock/general-discussions/problems-mocking-the-configurationmanager-appsettings.aspx

Официальный ответ: это проблема только с MSTest.

...