编写单元测试我的任务很无聊。所以我需要创建虚假数据。
我可以自动执行此过程吗? 例如,从数据库中获取数据并根据类实例生成c#代码。 或者只是从json \任何其他格式的文件中获取数据。
答案 0 :(得分:1)
我个人不知道在.net上从数据库生成数据的任何工具。可以帮助您为测试创建数据的过程可以帮助您实现工厂帮助,例如Plant或FactoryGirl.NET
我目前在项目中使用Plant
并且对我来说效果很好。
植物使用
要创建新工厂,您通常需要告诉它要查找蓝图的装配。你可以通过
来做到这一点var plant = new BasePlant().WithBlueprintsFromAssemblyOf<PersonBlueprint>();
其中PersonBlueprint是您定义的蓝图之一。然后,Plant将从该程序集中实现Blueprint接口的任何其他类型加载蓝图。
检索对象的默认实例
var person = plant.Create<Person>();
检索具有覆盖默认蓝图的特定部分的人员实例
var person = plant.Create<Person>(new
{
EmailAddress = "john@doe.com"
});
可以在一次调用中覆盖多个属性
var person = plant.Create<Person>(new
{
EmailAddress = "john@doe.com",
State = "GA"
});
要定义一个懒惰计算的Blueprint属性,但是使用序列计数器,将值设置为new Sequence(lambda),如下所示:
class PersonBlueprint : Blueprint
{
public void SetupPlant(BasePlant plant)
{
plant.DefinePropertiesOf<Person>(new
{
ID = new Sequence<int>((sequenceValue) => sequenceValue)
Name = new Sequence<string>((sequenceValue) => "test: " + sequenceValue)
});
}
}
FactoryGirl.NET用法
定义工厂:
FactoryGirl.Define(() => new User
{
FirstName = "John",
LastName = "Doe",
Admin = false
});
使用工厂:
var user = FactoryGirl.Build<User>();
自定义正在构建的对象:
var admin = FactoryGirl.Build<User>(x => x.Admin = true);