C# 无法使用FakeO伪造guid属性
我正在尝试使用名为FakeO()的库 它工作正常,除非有Guid属性。有人知道我可能做错了什么吗 我得到的例外是:类型为“System.Int32”的对象无法转换为类型为“System.Guid” 这是密码C# 无法使用FakeO伪造guid属性,c#,fakeo,C#,Fakeo,我正在尝试使用名为FakeO()的库 它工作正常,除非有Guid属性。有人知道我可能做错了什么吗 我得到的例外是:类型为“System.Int32”的对象无法转换为类型为“System.Guid” 这是密码 class Program { static void Main(string[] args) { Console.WriteLine("Get a single instance of an object");
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Get a single instance of an object");
var gud = Guid.NewGuid();
var obj1 = FakeO.Create.Fake<SampleClass>(
s => s.UniqueId = FakeO.Data.Random<Guid>(),
s => s.Id = FakeO.Number.Next(),
s => s.PhoneNumber = FakeO.Phone.Number(),
s => s.SomeString = FakeO.String.Random(50));
Console.WriteLine(obj1.ToString() + "\n");
IEnumerable<SampleClass> obj2 = FakeO.Create.Fake<SampleClass>(10, s => s.Id = FakeO.Number.Next(),
s => s.PhoneNumber = FakeO.Phone.Number(),
s => s.SomeString = FakeO.String.Random(50));
foreach (var obj in obj2)
Console.WriteLine(obj.ToString());
Console.ReadKey();
}
}
public class SampleClass
{
public int Id { get; set; }
public string SomeString { get; set; }
public string PhoneNumber { get; set; }
public Guid UniqueId { get; set; }
public override string ToString()
{
var output = "ID={0},SomeString ={1},PhoneNumber = {2}";
return String.Format(output, Id, SomeString, PhoneNumber);
}
}
类程序
{
静态void Main(字符串[]参数)
{
WriteLine(“获取对象的单个实例”);
var gud=Guid.NewGuid();
var obj1=FakeO.Create.false(
s=>s.UniqueId=FakeO.Data.Random(),
s=>s.Id=FakeO.Number.Next(),
s=>s.PhoneNumber=FakeO.Phone.Number(),
s=>s.SomeString=FakeO.String.Random(50));
Console.WriteLine(obj1.ToString()+“\n”);
IEnumerable obj2=FakeO.Create.Fake(10,s=>s.Id=FakeO.Number.Next(),
s=>s.PhoneNumber=FakeO.Phone.Number(),
s=>s.SomeString=FakeO.String.Random(50));
foreach(obj2中的var obj)
Console.WriteLine(obj.ToString());
Console.ReadKey();
}
}
公共类样本类
{
公共int Id{get;set;}
公共字符串SomeString{get;set;}
公共字符串PhoneNumber{get;set;}
公共Guid唯一ID{get;set;}
公共重写字符串ToString()
{
var output=“ID={0},SomeString={1},PhoneNumber={2}”;
返回String.Format(输出、Id、SomeString、PhoneNumber);
}
}
Guid
是值类型,作者没有正确处理不支持的ValueType
。对于方法中所有不受支持的值类型,他都返回0,这对于任何结构类型都不太好。根据,最后一行数据。Random
应固定为
if(t.IsValueType)
{
return Activator.CreateInstance(t);
}
return null;
这将返回struct type的默认值,对于我认为的Guid
类型,它是空的Guid
。如果要支持Guid
类型,可以在最后检查ValueType
之前将其添加到Data.Random
方法中:
if (t == typeof(Guid))
return Guid.NewGuid();
我没有测试我的解决方案,但它应该测试。看起来您应该使用:
FakeO.Distinct.Guid()
github页面说它支持开箱即用