Я использую два интерфейса для регистрации (NLog) в моем приложении Xamarin
ILoggingService
public interface ILoggingService
{
void Info(string message);
void Info(string format, params object[] args);
void Error(string message);
void Error(string format, params object[] args);
void Error(Exception e, string message);
void Error(Exception e, string format, params object[] args);
void Fatal(string message);
void Fatal(string format, params object[] args);
void Fatal(Exception e, string message);
void Fatal(Exception e, string format, params object[] args);
void Debug(string message);
void Debug(string format, params object[] args);
void Trace(string message);
void Trace(string format, params object[] args);
void Warn(string message);
void Warn(string format, params object[] args);
}
И еще один интерфейс
ILogManager
public interface ILogManager
{
ILoggingService GetLog([System.Runtime.CompilerServices.CallerFilePath]string callerFilePath = "");
}
В моем тестовом проекте я создал файл установки следующим образом.
[SetUpFixture]
public class Setup
{
public static readonly Mock<IDependencyService> MockedService = new Mock<IDependencyService>(MockBehavior.Strict);
readonly Mock<ILogManager> _logManager = new Mock<ILogManager>(MockBehavior.Strict);
readonly Mock<ILoggingService> _loggingService = new Mock<ILoggingService>(MockBehavior.Strict);
[OneTimeSetUp]
public void OneTimeSetUp()
{
MockedService.Setup(p => p.Get<ILogManager>()).Returns(_logManager.Object);
MockedService.Setup(p => p.Get<ILoggingService>()).Returns(_logManager.Object.GetLog());
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
}
}
Я думаю, что допустил ошибку во время насмешки над интерфейсом. Из-за этого я получаю GetLog () всегда нулевым.
logger = _serviceLocator.Get<ILogManager>().GetLog(); // Always return null
Кто-нибудь может мне помочь решить мою проблему? Похоже на проблему с созданием заглушки для упомянутого интерфейса.
Пожалуйста, помогите