我刚刚开始为我当前的项目探索 BDD。我将最小起订量与 mspec 一起使用以获得良好的测试输出。 但是,我找不到足够的示例来说明我正在尝试做的事情,也许我使用了错误的方法或者可能只是对语法的理解不够,请指教。
问题是我正在尝试验证是否已在类中设置属性。此属性是一个对象列表,我想验证每个对象是否具有与预期对象相同的值。
所以给定初始前提
public class Data
{
int a;
}
public class DataViewer : IDataViewer
{
public List<Data> dataList {get;set;}
}
public interface IDataViewer
{
public List<Data> dataList {get;set;}
}
我正在使用 mspec 和 moq 来执行以下操作
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>();
}
}
我将如何进行比较? 我可以使用运算符覆盖吗?如果是,如何? 我试图将表达式主体放在 lambda 的右侧,结果却被告知“带有语句主体的 lambda 表达式无法转换为表达式树”。
感谢任何帮助:)
最佳答案
是否重载了 Data 对象上的 equals 方法?
public override bool Equals(object obj)
{
if (((Data)obj).a.Equals(this.a))
return true;
return false;
}
当您将 dataList 与其 expectedDataList 进行比较时,这应该会自动调用。
关于c# - 如何使用 moq 和 mspec(BDD 风格)比较两个对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2113739/