Я пытаюсь настроить макет интерфейса с общей функцией c, используя MOQ. эта функция имеет следующие обозначения:
public interface IWizard
{
bool Cast<TSpell>(TSpell spell)
where TSpell : SpellBase, IComponents;
}
Когда я пытаюсь установить функцию настройки, я не могу просто завершить ее sh. Я продолжаю получать сообщение о том, что неявное преобразование невозможно. Он содержит следующий текст: «Не существует неявного преобразования ссылок из« SpellBase »в« IComponents ».
var wizard = new Mock<IWizard>();
wizard
.Setup(x => x.Cast(It.IsAny<SpellBase>())) // this line has an error
.Returns(true);
Какие у меня есть варианты, кроме реализации базового класса, который реализует как SpellBase
, так и IComponents
? Возможно ли это вообще?
EDIT1: я пытался реализовать подход Петра следующим образом:
[Test]
public void Test_JsonConvert_Performace()
{
var wizard = new Mock<IWizard>();
wizard
.Setup(x => x.Cast(It.IsAny<TestSpell>()))
.Returns(true);
var result = wizard.Object.Cast(new RealSpell());
Assert.IsTrue(result);
}
public interface IWizard
{
bool Cast<TSpell>(TSpell spell)
where TSpell : SpellBase, IComponents;
}
public abstract class SpellBase
{
}
public interface IComponents
{
}
public class TestSpell : SpellBase, IComponents
{
}
public class RealSpell : SpellBase, IComponents
{
}
к сожалению, мой тест не пройден.