我想测试我的代码!一个崇高的目标,我相信你同意。
我需要为我的回归测试模拟DataContexts,运行测试将验证对于任何代码更改,给定相同的输入我们产生相同的输出。
我正在使用Moles来模拟我的数据上下文。这很棒很简单,我推荐它,如果它更轻巧,我可能会转移到Moq,但这是另一个故事。
要获取Mocked Data Contexts的数据,我想序列化存储在MSSQL DB中的少量实时数据。为了允许Linq-To-SQL类被序列化,我使用DataContractSerializer按照MSFT的指示将序列化模式属性设置为单向。这允许我将行序列化为XML。
当我想序列化表时,我必须首先通过调用 ToList()将其拉入内存。这是因为 Linq.Data.Table 本身不可序列化。
所以现在我有一个每个表的文件,然后我可以反序列化XML文件并从列表中创建Linq表。然后我们创建一个委托并将其用作模拟数据上下文的实现。 this screencast中明确解释了所有这些。
我遇到的问题是维护表之间的关系,如何序列化具有所有依赖关系的行,然后以可以访问它们的方式对其进行反序列化。
示例
在我希望测试的应用程序代码中,我使用的语法如;
var firstCustomerPurchases = Customers.First()。Purchases
这在我的MockDataContext测试用例中不起作用,因为Customers和Purchases表只是彼此没有绑定的列表。
如何在整个序列化/反序列化过程中保持关系?
谢谢,
GAV株系
答案 0 :(得分:0)
您是否考虑过将Linq表转换为可序列化并保持关系的DataSet?