具有受保护的构造函数和工厂方法的对象列表的自动修复

贾斯汀的家园
public partial class TestObjectCode
{
    /// <summary>
    /// We don't make constructor public and forcing to create object using
    /// <see cref="Create"/> method.
    /// But constructor can not be private since it's used by EntityFramework.
    /// Thats why we did it protected.
    /// </summary>
    protected TestObjectCode() {}

    public static  TestObjectCode Create(
                    DateTime executiontime,
                    Int32 conditionid,
                    String conditionname)
    {
        var @objectToReturn = new TestObjectCode
        {

            ExecutionTime = executiontime,
            ConditionId = conditionid,
            ConditionName = conditionname
        };

        return @objectToReturn;
    }

    public virtual Int32 ConditionId { get; set; }

    public virtual String ConditionName { get; set; }

    public virtual DateTime ExecutionTime { get; set; }
}

测试:

[Test]
[TestCase("1/1/2015", "07/5/2016")]
public void Task Should_Filter_By_Date_Range_Only(string startDate, string endDate)
{
    //Arrange
    var startDateTime = DateTime.Parse(startDate);
    var endDateTime = DateTime.Parse(endDate);

    //get randomDate between two Dates
    TimeSpan timeSpan = endDateTime - startDateTime;
    var randomTest = new Random();
    TimeSpan newSpan = new TimeSpan(0, randomTest.Next(0, (int)timeSpan.TotalMinutes), 0);
    DateTime newDate = startDateTime + newSpan;

    var list = new List<TestObjectCode>();
    _fixture.AddManyTo(list);
    _fixture.Customize<TestObjectCode>(
        c => c
        .With(x => x.ExecutionTime, newDate)
        .With(x => x.ConditionId, 1)
        );
    _fixture.RepeatCount = 7;
    _fixture.AddManyTo(list);
}

由于_fixture.Customize和我的ctor被限制,以上测试失败。如果我将其公开,则可以,但是我希望将其发布。此类还有15个以上我没有在此处列出的属性。我也想为列表中的每个项目在两个dateRanges之间的一个randmon日期。

如何调用工厂的Create方法?我需要为每个属性定义自动修复吗?

Ploeh.AutoFixture.ObjectCreationException:装饰的ISpecimenBuilder无法基于以下请求创建标本:EMR.Entities.AbpAuditLogs。如果请求表示接口或抽象类,则可能发生这种情况;如果是这种情况,请注册一个ISpecimenBuilder,它可以根据请求创建标本。如果在强类型的Build表达式中发生这种情况,请尝试使用IFactoryComposer方法之一提供工厂。

马克·西曼(Mark Seemann)

您可以通过添加.FromFactory(new MethodInvoker(new FactoryMethodQuery()))自定义项来使上述测试通过

fixture.Customize<TestObjectCode>(
    c => c
    .FromFactory(new MethodInvoker(new FactoryMethodQuery()))
    .With(x => x.ExecutionTime, newDate)
    .With(x => x.ConditionId, 1));

这两个类都在Ploeh.AutoFixture.Kernel名称空间中定义

尽管如此,您应该强烈地重新考虑您的整体方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

没有要从字符串值('')反序列化的字符串参数构造函数/工厂方法

来自分类Dev

C#6.0中的类可以具有受保护的主构造函数吗?

来自分类Dev

工厂创建的对象可以具有构造函数吗?

来自分类Dev

静态工厂方法与公共构造函数

来自分类Dev

Android片段工厂方法与构造函数重载

来自分类Dev

无法从JSON字符串实例化类型的值;没有单字符串构造函数/工厂方法

来自分类Dev

$ rootScope和工厂方法

来自分类Dev

具有外部功能的Python工厂方法

来自分类Dev

在具有公共构造函数而不是受保护构造函数的抽象类中,有什么要点吗?

来自分类Dev

片段和工厂方法

来自分类Dev

具有私有构造函数的c#模拟对象,通过静态工厂方法初始化

来自分类Dev

为什么即使我的抽象类具有受保护的构造函数,也要创建默认构造函数?

来自分类Dev

具有静态工厂方法或构造函数的工厂模式

来自分类Dev

具有许多参数的对象的工厂方法

来自分类Dev

工厂方法和构造函数之间的区别

来自分类Dev

为什么LocalDate,LocalTime和Stream对象使用工厂方法of()而不是构造函数?

来自分类Dev

有准入问题与工厂方法在HashMap的对象

来自分类Dev

Dart命名构造函数,静态方法和工厂构造函数

来自分类Dev

无法从JSON字符串实例化类型的值;没有单字符串构造函数/工厂方法

来自分类Dev

Android片段工厂方法与构造函数重载

来自分类Dev

具有从工厂方法创建的私有构造函数的单元测试类

来自分类Dev

受保护的私有构造函数

来自分类Dev

使用带有类型参数的工厂方法,使用参数化的构造函数创建派生类

来自分类Dev

强制子类具有特定的工厂方法或构造函数

来自分类Dev

带有工厂方法和参数的Spring静态工厂

来自分类Dev

对于具有不同参数的构造函数,工厂方法不够灵活,还是我错过了一些东西?

来自分类Dev

将 xml 解析为 java 对象时没有单字符串构造函数/工厂方法错误

来自分类Dev

工厂方法构造Java对象:属性vs构造函数(通过方法)

来自分类Dev

具有依赖关系的工厂方法模式的实现

Related 相关文章

  1. 1

    没有要从字符串值('')反序列化的字符串参数构造函数/工厂方法

  2. 2

    C#6.0中的类可以具有受保护的主构造函数吗?

  3. 3

    工厂创建的对象可以具有构造函数吗?

  4. 4

    静态工厂方法与公共构造函数

  5. 5

    Android片段工厂方法与构造函数重载

  6. 6

    无法从JSON字符串实例化类型的值;没有单字符串构造函数/工厂方法

  7. 7

    $ rootScope和工厂方法

  8. 8

    具有外部功能的Python工厂方法

  9. 9

    在具有公共构造函数而不是受保护构造函数的抽象类中,有什么要点吗?

  10. 10

    片段和工厂方法

  11. 11

    具有私有构造函数的c#模拟对象,通过静态工厂方法初始化

  12. 12

    为什么即使我的抽象类具有受保护的构造函数,也要创建默认构造函数?

  13. 13

    具有静态工厂方法或构造函数的工厂模式

  14. 14

    具有许多参数的对象的工厂方法

  15. 15

    工厂方法和构造函数之间的区别

  16. 16

    为什么LocalDate,LocalTime和Stream对象使用工厂方法of()而不是构造函数?

  17. 17

    有准入问题与工厂方法在HashMap的对象

  18. 18

    Dart命名构造函数,静态方法和工厂构造函数

  19. 19

    无法从JSON字符串实例化类型的值;没有单字符串构造函数/工厂方法

  20. 20

    Android片段工厂方法与构造函数重载

  21. 21

    具有从工厂方法创建的私有构造函数的单元测试类

  22. 22

    受保护的私有构造函数

  23. 23

    使用带有类型参数的工厂方法,使用参数化的构造函数创建派生类

  24. 24

    强制子类具有特定的工厂方法或构造函数

  25. 25

    带有工厂方法和参数的Spring静态工厂

  26. 26

    对于具有不同参数的构造函数,工厂方法不够灵活,还是我错过了一些东西?

  27. 27

    将 xml 解析为 java 对象时没有单字符串构造函数/工厂方法错误

  28. 28

    工厂方法构造Java对象:属性vs构造函数(通过方法)

  29. 29

    具有依赖关系的工厂方法模式的实现

热门标签

归档