コントロールのコレクションを構成するメソッドをテストしようとしています。次の 2 つのメソッドを呼び出します。
- 元のコレクションをコピーします。
- 新しいコレクションを並べ替えます。
理想的には、コレクションを渡して、それが正しくソートされているかどうかをテストできるようにしたいと考えています。また、メソッド 1) が 2 回呼び出されていることも確認したいと思います。以下に基づく試行を参照してください。 RhinoMock を使用した例
MainPresenter のインスタンスを作成しようとすると、次のテストでエラーが発生します。エラーの一般的な要点は、「Moq.Mock から "FrazerMann.CsvImporter.UserInterface.IMainForm. + IFileDialog の同様のもの。
[Test]
public void ComposeCollectionOfControls_CallSequence_4Calls()
{
var main = new Mock<IMainForm>();
var dialog = new Mock<IFileDialog>();
var temp = new Mock<IMainPresenter>();
temp.Setup(s => s.PopulateLists<Control>(It.IsAny<TableLayoutPanel>(), It.IsAny<List<Control>>()));
var testObject = new MainPresenter(main.Object, dialog.Object);
testObject.ComposeCollectionOfControls(It.IsAny<object>(), It.IsAny<EventArgs>());
temp.Verify(v => v.PopulateLists<Control>(It.IsAny<TableLayoutPanel>(), It.IsAny<List<Control>>()), Times.Once());
}
ComposeCollectionOfControls をテストして、PopulateList() が 2 回呼び出されることを確認したいと思います。
public interface IMainPresenter
{
void PopulateLists<T>(TableLayoutPanel userInputs, List<T> container) where T : Control;
int SortList<T>(T control1, T control2) where T : Control;
}
public class MainPresenter:IMainPresenter
{
UserInputEntity inputs;
IFileDialog _dialog;
IMainForm _view;
public MainPresenter(IMainForm view, IFileDialog dialog)
{
_view = view;
_dialog = dialog;
view.ComposeCollectionOfControls += ComposeCollectionOfControls;
view.SelectCsvFilePath += SelectCsvFilePath;
view.SelectErrorLogFilePath += SelectErrorLogFilePath;
view.DataVerification += DataVerification;
}
public void ComposeCollectionOfControls(object sender, EventArgs e)
{
PopulateLists<TextBox>(_view.ColumnNameCtrls, _view.SortedColumnNameCtrls);
_view.SortedColumnNameCtrls.Sort(SortList<TextBox>);
PopulateLists<ComboBox>(_view.ColumnDataTypeCtrls, _view.SortedColumnDataTypeCtrls);
_view.SortedColumnDataTypeCtrls.Sort(SortList<ComboBox>);
}
}
これをどのように行うべきかについて、誰かが私にいくつかの指針を教えてください。