Ich versuche, eine Klasse namens "verspottet" zu verspotten UserInputEntity
, die eine Eigenschaft namens "enthält" ColumnNames
(sie enthält andere Eigenschaften, ich habe sie nur für die Frage vereinfacht).
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; }
}
}
Ich habe eine Präsentationsklasse:
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;
}
}
}
}
Ich habe den folgenden Test versucht, bei dem ich die Entität verspotte und versuche, die ColumnNames
Eigenschaft dazu zu bringen , eine initialisierte zurückzugeben, List<string>()
aber sie funktioniert nicht:
[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);
}
Die Fehler, die ich erhalte, besagen, dass es einige ungültige Argumente gibt + Argument 1 kann nicht von Zeichenfolge in konvertiert werden
System.Func<System.Collection.Generic.List<string>>
Jede Hilfe wäre dankbar.
quelle
Während das Verspotten von schreibgeschützten Eigenschaften nur Eigenschaften mit der Getter-Methode bedeutet, sollten Sie sie als virtuell deklarieren, andernfalls wird System.NotSupportedException ausgelöst, da sie in VB nur unterstützt wird, wenn moq intern überschreibt und einen Proxy erstellt, wenn wir etwas verspotten.
quelle