Я только что попробовал ваш тест, и он работал как ожидалось:
// 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 , он автоматически установит перехватчики, если это еще не сделано.
[Примечание: я использовал последнюю версию]