У меня есть класс фабрики возвращающегося делегата, как показано ниже (метод GetDelegate)Как проверить делегат, используя Moq и NUnit
public interface IFactory
{
Func<int, string> GetDelegate(bool isValid);
}
public class AFactory : IFactory
{
private readonly IService1 _service1;
private readonly IService2 _service2;
public AFactory(IService1 service1, IService2 service2)
{
_service1 = service1;
_service2= service2;
}
public Func<int, string> GetDelegate(bool isValid)
{
if (isValid)
return _service1.A;
return _service2.B;
}
}
public interface IService1
{
string A(int id);
}
public interface IService2
{
string B(int id);
}
Я пытаюсь написать модульный тест для GetDelegate, но не знаю, как утверждать, что конкретный Func был возвращен в зависимости от IsValid
Моя попытка испытания блока как ниже (который я не доволен)
[Test]
public void ShouldReturnCorrectMethod()
{
private var _sut = new AFactory(new Mock<IService1>(), new Mock<IService2>());
var delegateObj = _sut.GetDelegate(true);
Assert.AreEqual(typeof(string), delegateObj.Method.ReturnType);
Assert.AreEqual(1, delegateObj.Method.GetParameters().Count());
}
Любая помощь очень ценится
благодаря
Thanks. Да, это должно помочь. Из любопытства это «правильное» использование фабричного шаблона? Я действительно не возвращаю экземпляр класса как таковой? –
@nesh_s: Ну, вы возвращаете значение ... это не должен быть просто класс. Это немного необычно, но не особенно тревожно. –