setup net ejemplos c# c#-4.0 properties moq

c# - net - Moq, SetupGet, burlarse de una propiedad



moq setup (2)

Pero si burlarse de las propiedades de solo lectura significa que las propiedades con el método getter solo se debe declarar como virtual, de lo contrario se lanzará System.NotSupportedException porque solo se admite en VB ya que moq anula internamente y crea proxy cuando nos burlamos de algo.

UserInputEntity una clase, llamada UserInputEntity , que contiene una propiedad llamada ColumnNames : (contiene otras propiedades, la simplifiqué para la pregunta)

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; } } }

Tengo una clase de presentador:

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 la siguiente prueba, donde me burlo de la entidad, intento obtener la propiedad ColumnNames para devolver una List<string>() inicializada List<string>() pero no funciona:

[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); }

Los errores que obtengo indican que hay algunos argumentos inválidos + El argumento 1 no se puede convertir de cadena a

System.Func<System.Collection.Generic.List<string>>

Cualquier ayuda sería apreciada.


ColumnNames es una propiedad de tipo List<String> por lo que cuando configure debe pasar una List<String> en la llamada de Returns como un argumento (o un func que devuelva una List<String> )

Pero con esta línea intentas devolver solo una string

input.SetupGet(x => x.ColumnNames).Returns(temp[0]);

que está causando la excepción.

Cámbielo para devolver la lista completa:

input.SetupGet(x => x.ColumnNames).Returns(temp);