I've just started to explore BDD for my current project. I'm using moq with mspec to get nice test outputs. However, i can't find enough examples of what i'm trying to do, maybe i'm using the wrong approach or perhaps just don't understand the syntax enough, please advise.
The problem is i'm trying开发者_开发知识库 to verify whether a property has been set in a class. This property is a list of objects and i want to verify that each object has the same values as the expected object.
So given the initial premises
public class Data
{
int a;
}
public class DataViewer : IDataViewer
{
public List<Data> dataList {get;set;}
}
public interface IDataViewer
{
public List<Data> dataList {get;set;}
}
I'm using mspec and moq to do the following
class when_refreshing_data_list : Context
{
Because .... = () =>
{
.... // process the datalist
}
ThenIt should_set_the_data_list = () =>
{
List<DataList> expectedDataList = new List<DataList>();
expectedDataList.add() // add some expected values to the datalist
...
// problem is here in comparing two List<DataList>
_mockDataViewer.VerifySet(f => f.dataList = expectedDataList)
}
}
public abstract class Context
{
Establish context = () =>
{
_mockDataViewer = new Mock<IDataViewer>();
}
}
How would I perform this comparison? Can I use operator override? If yes, how? I've tried to put an expression body on the right side of the lambda only to be told that "a lambda expression with a statement body cannot be converted to an expression tree".
Any help appreciated :)
Have you overloaded the equals method on the Data object?
public override bool Equals(object obj)
{
if (((Data)obj).a.Equals(this.a))
return true;
return false;
}
This should get called automatically when you're comparing the dataList to its expectedDataList.
精彩评论