나는라는 UserInputEntity
속성을 포함 하는 클래스를 모의하려고합니다 ColumnNames
: (다른 속성을 포함하고 있습니다.
namespace CsvImporter.Entity
{
public interface IUserInputEntity
{
List<String> ColumnNames { get; set; }
}
public class UserInputEntity : IUserInputEntity
{
public UserInputEntity(List<String> columnNameInputs)
{
ColumnNames = columnNameInputs;
}
public List<String> ColumnNames { get; set; }
}
}
발표자 클래스가 있습니다.
namespace CsvImporter.UserInterface
{
public interface IMainPresenterHelper
{
//...
}
public class MainPresenterHelper:IMainPresenterHelper
{
//....
}
public class MainPresenter
{
UserInputEntity inputs;
IFileDialog _dialog;
IMainForm _view;
IMainPresenterHelper _helper;
public MainPresenter(IMainForm view, IFileDialog dialog, IMainPresenterHelper helper)
{
_view = view;
_dialog = dialog;
_helper = helper;
view.ComposeCollectionOfControls += ComposeCollectionOfControls;
view.SelectCsvFilePath += SelectCsvFilePath;
view.SelectErrorLogFilePath += SelectErrorLogFilePath;
view.DataVerification += DataVerification;
}
public bool testMethod(IUserInputEntity input)
{
if (inputs.ColumnNames[0] == "testing")
{
return true;
}
else
{
return false;
}
}
}
}
엔터티를 조롱하고 ColumnNames
초기화 된 값을 반환하는 속성을 가져 오려고 시도 List<string>()
했지만 작동하지 않는 다음 테스트를 시도 했습니다.
[Test]
public void TestMethod_ReturnsTrue()
{
Mock<IMainForm> view = new Mock<IMainForm>();
Mock<IFileDialog> dialog = new Mock<IFileDialog>();
Mock<IMainPresenterHelper> helper = new Mock<IMainPresenterHelper>();
MainPresenter presenter = new MainPresenter(view.Object, dialog.Object, helper.Object);
List<String> temp = new List<string>();
temp.Add("testing");
Mock<IUserInputEntity> input = new Mock<IUserInputEntity>();
//Errors occur on the below line.
input.SetupGet(x => x.ColumnNames).Returns(temp[0]);
bool testing = presenter.testMethod(input.Object);
Assert.AreEqual(testing, true);
}
잘못된 인수가 있음을 나타내는 오류 + 인수 1을 문자열에서 다음으로 변환 할 수 없습니다.
System.Func<System.Collection.Generic.List<string>>
어떤 도움을 주시면 감사하겠습니다.
답변
ColumnNames
은 유형의 속성 List<String>
이므로 설정할 때 호출 List<String>
에서 a 를 Returns
인수 (또는 a를 반환하는 func)로 전달해야합니다 .List<String>
).
하지만이 줄을 사용하면 string
input.SetupGet(x => x.ColumnNames).Returns(temp[0]);
예외가 발생합니다.
전체 목록을 반환하도록 변경하십시오.
input.SetupGet(x => x.ColumnNames).Returns(temp);
답변
그러나 읽기 전용 속성을 모의한다는 것은 getter 메서드를 사용하는 속성을 의미하지만 가상으로 선언해야합니다. 그렇지 않으면 VB에서만 지원되기 때문에 System.NotSupportedException이 발생합니다. 왜냐하면 moq는 내부적으로 무언가를 모의 할 때 프록시를 재정의하고 생성하기 때문입니다.