Saya mencoba untuk mengejek kelas, yang disebut UserInputEntity
, yang berisi properti yang disebut ColumnNames
: (itu memang berisi properti lain, saya baru saja menyederhanakannya untuk pertanyaan itu)
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; }
}
}
Saya memiliki kelas presenter:
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;
}
}
}
}
Saya telah mencoba tes berikut, di mana saya mengejek entitas, mencoba mendapatkan ColumnNames
properti untuk mengembalikan yang diinisialisasi List<string>()
tetapi tidak berfungsi:
[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);
}
Kesalahan yang saya dapatkan menyatakan bahwa ada beberapa argumen yang tidak valid + Argumen 1 tidak dapat diubah dari string menjadi
System.Func<System.Collection.Generic.List<string>>
Bantuan apa pun akan dihargai.
sumber
Tetapi sementara mocking properti read-only berarti properti dengan metode getter saja Anda harus mendeklarasikannya sebagai virtual, jika tidak System.NotSupportedException akan dilempar karena hanya didukung di VB karena moq menimpa secara internal dan membuat proxy ketika kita memalsukan apa pun.
sumber