Moq, SetupGet, Mocking a property
ColumnNames
is a property of type List<String>
so when you are setting up you need to pass a List<String>
in the Returns
call as an argument (or a func which return a List<String>
)
But with this line you are trying to return just a string
input.SetupGet(x => x.ColumnNames).Returns(temp[0]);
which is causing the exception.
Change it to return whole list:
input.SetupGet(x => x.ColumnNames).Returns(temp);
Mocking read-only properties means properties with getter method only.
Note that you should declare it as virtual
, otherwise System.NotSupportedException
will be thrown.
If you're using an interface, that does not apply to you. It works instantly because the mock framework will implement the interface on the fly for you.