Moq, SetupGet, se moquant d'une propriété
Je suis en train de simuler une classe, appelée UserInputEntity
, qui contient une propriété appelée ColumnNames
: (il ne contient pas d'autres propriétés, j'ai juste simplifié pour la question)
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; }
}
}
J'ai un présentateur de la classe:
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;
}
}
}
}
J'ai essayé le test suivant, où j'ai simulé l'entité, essayez d'obtenir ColumnNames
propriété de retourner un initialisé List<string>()
mais cela ne fonctionne pas:
[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);
}
Les erreurs-je obtenir de l'état qu'il ya quelques arguments non valides + Argument 1 ne peut pas être convertie à partir de la chaîne de
System.Func<System.Collection.Generic.List<string>>
Toute aide serait appréciée.
Vous devez vous connecter pour publier un commentaire.
ColumnNames
est une propriété de typeList<String>
ainsi, lorsque vous configurez vous avez besoin pour passer unList<String>
dans leReturns
appel comme d'un argument (ou un func qui retournent unList<String>
)Mais avec cette ligne que vous essayez de revenir juste un
string
qui est à l'origine de l'exception.
Changer pour revenir ensemble de la liste:
Mais tout en se moquant des propriétés en lecture seule moyen des propriétés avec la méthode de lecture seule, vous devez le déclarer comme virtuel autrement Système.NotSupportedException sera levée, car il est uniquement pris en charge dans visual basic comme moq interne de remplacement et de créer proxy lorsque nous moquer de quelque chose.