servicestack - 如何使用 ServiceStack.OrmLite 从现有数据中获取实体列表?
问题描述
我正在使用测试数据来运行集成测试。所以我使用以下方法
public static IEnumerable<ProductPhase> GetProductPhases()
{
return new List<ProductPhase>
{
new ProductPhase { Id = "FirstPhase", Order = 1 },
new ProductPhase { Id = "SecondPhase", Order = 2 },
new ProductPhase { Id = "ThirdPhase", Order = 3 }, // ...
}
}
[Test]
public void MyTest()
{
using (var db = HostContext.TryResolve<IDbConnectionFactory>.OpenDbConnection())
{
db.DeleteAll<ProductPhase>();
db.InsertAll(GetProductPhases());
}
// Do test stuff ...
}
为了完全验证我的集成测试,我需要与生产中插入的数据同步。这个数据可以包含几十行,每次我都需要GetProductPhases()
手动重构方法,所以我接近现实。
我正在寻找的是一种选择现有 SQL 数据的方法,我可以将其复制粘贴到ProductPhase
对象初始化程序。
因此,能够调用如下内容:
db.Select<ProductPhase>().DumpList() // where db is connected to production server, so I can get actual values and it returns a string with new List<ProductPhase> { new ProductPhase { Id = "FirstPhase", Order = 1 }, new ProductPhase { Id = "SecondPhase", Order = 2 }, new ProductPhase { Id = "ThirdPhase", Order = 3 }, // ... }
也许有更好的方法可以做到这一点,我不知道,我对替代方案持开放态度。
谢谢你。
解决方案
我会使用扩展方法将结果保存到 CSV,而.ToCsv()
不是在测试开始之前对其进行反序列化。通常我会将 CSV 保存在一个外部.csv
文件中(设置为复制到输出文件夹),以便于更新。
推荐阅读
- gradle - Intellij 未找到 gradle 中包含的运行时依赖项
- css - 设置行高以适应 CSS Grid 中行中的最高单元格
- debugging - 如何在 VSCode 调试模式下显示整个值
- android - 从谷歌驱动器或 drpobox 的 android 应用程序的应用程序内更新
- javascript - 引导折叠按钮单击时不显示内容
- css - 我可以在容器流体标签内使用容器标签吗?
- c# - 如何不丢失聊天机器人 v4 的对话流?
- python - 如何使用 os.rename 重命名具有增量 no 的文件夹
- c# - 当我在服务器上发布项目时,Oracle.DataAccess 程序集错误
- node.js - 获取并渲染 api 到 Dom