В этой платформе интерфейс не может иметь виртуальный метод.
Проблема: я использую метод MessageBox.Show() внутри одного из методов пользовательского класса, который хочу протестировать. Мне нужно обернуть класс MessageBox и метод-заглушку Show. Но заглушенный метод не возвращает ожидаемое значение, он возвращает None. Ниже приведены классы
Класс-оболочка
Код: Выделить всё
public class MessagePrompt : IMessagePrompt
{
public virtual DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
=> MessageBox.Show(owner, text, caption, buttons, icon);
}
public interface IMessagePrompt
{
DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon);
}
Код: Выделить всё
public partial class SurrDetail
{
public IMessagePrompt messagePrompt;
public SurrDetail(IMessagePrompt messagePrompt)
{
InitializeComponent();
this.messagePrompt = messagePrompt;
}
public void Reject()
{
if (messagePrompt.Show(this, "Are you sure", "Reject", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
.......
}
}
}
Код: Выделить всё
[TestFixture]
public class SurrDetailTest
{
#region Locals
private SurrDetail surrDetail;
IMessagePrompt messagePrompt= MockRepository.GenerateMock();
[TestFixtureSetUp]
public void SetUp()
{
messagePrompt.Stub(m => m.Show(surrDetail, "test", "test", MessageBoxButtons.YesNo, MessageBoxIcon.Question)).Return(DialogResult.Yes);
surrDetail = new SurrDetail(messagePrompt);
}
[Test]
public void Reject_Test()
{
Reject();
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... cted-value
Мобильная версия