c# - 使用 AutoPoco 填充列表属性

标签 c# .net unit-testing autopoco

我最近试用了 AutoPoco for c#,这是一个自动创建 POCO 并用测试数据填充它们的工具。但是,我现在被困住了。我有一个人 POCO,每个人都有一个电子邮件地址列表,如下所示:

class Person
{
    String Name;
    int Age;
    List<string> EmailAddresses;
}

现在我尝试用 AutoPoco 填充它:

                x.Include<Person>()
                   .Setup(p => p.Name).Use<FirstNameSource>();
                   .Setup(p => p.EmailAddresses).Use<EmailAddressSource>()
                ;

但第二行因语法错误而失败,因为它需要一个字符串属性,而不是一个列表。 AutoPoco 有一个 EnumerableSource,这可能是我需要的,但是我找不到它的任何代码示例。你能给我一些关于如何使用 AutoPoco 填充字符串列表的提示吗?

最佳答案

这是一个工作示例。您发布的代码片段无法编译,所以这是第一个问题。

我找不到更优雅的方式来生成集合的元素。

public class Person
{
    public String Name;
    public int Age;
    public List<string> EmailAddresses = new List<string>();

    public void Add(string email)
    {
        EmailAddresses.Add(email);
    }
}

[Test]
public void Noodling()
{
        IGenerationSessionFactory factory = AutoPocoContainer.Configure(x =>
    {
        x.Conventions(c => { 
            c.UseDefaultConventions();
        });
        x.AddFromAssemblyContainingType<LegacyUserProfileDto>();

        x.Include<Person>()
            .Setup(p => p.Name).Use<FirstNameSource>()
            .Invoke(z => z.Add(Use.Source<string, EmailAddressSource>()));
        //.Invoke(z => z.EmailAddresses.Add(Use.Source<string, EmailAddressSource>()));//Fails
    });
    IGenerationSession session = factory.CreateSession();

    Person person = session.Single<Person>().Get();
    Console.WriteLine(person.Age + " " + person.Name);
    foreach (string emailAddress in person.EmailAddresses)
    {
        Console.WriteLine(emailAddress);    
    }
}

关于c# - 使用 AutoPoco 填充列表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877372/

相关文章:

c# - 类型为 'Type' 的变量中的声明变量

c# - .NET 中的点有多贵?

javascript - Redux 表单 onSubmit 在测试中值空对象

c# - Vector2.Normalize函数,对对角线输出感到困惑

c# - 如何使用不同的注入(inject)重新实例化 MVC3 Controller

c# - 如何告诉调试器不要停止一些关键线程?

angularjs - 写好 App 后再写 Angular 单元测试?

unit-testing - 处理程序单元测试的模拟功能

c# - 使用 XSD 架构验证 XML,而无需使用 C# 更改 XML

C# 对象引用和操作类型