【问题标题】:AutoFixtures and how to use them自动夹具以及如何使用它们
【发布时间】:2019-01-07 19:14:06
【问题描述】:

我目前正在使用自动固定装置进行单元测试。

我有这门课media

我想用随机值创建,有人告诉我这可以使用自动夹具来完成 -

所以我尝试使用它的公共构造函数Media(MediaData mediaData),

这样:

                MediaItem anonymousData = fixture.CreateAnonymous<MediaItem>();
                Media media = new Media(new MediaData(anonymousData));

问题在于,子项 -> media.MediaData.MediaItem.InnerItem; 没有设置。

然后我尝试再次降低一个级别:因为 MediaData 有一个公共构造函数 public MediaData(MediaItem [mediaItem][3]) 我可以使用它来代替所以我尝试了这个

            MediaItem anonymousData = fixture.CreateAnonymous<MediaItem>();
            Media media = new Media(new MediaData(anonymousData));

但这给出了一个错误: 消息:System.InvalidOperationException:找不到配置节点:databases/database[@id='databaseName2df4ec17-4d66-41bf-aa2f-75ed1ddd266a']

我只是想生成一个有效的媒体项,media.MediaData.MediaItem.InnerItem;

如何使用 autofixture 制作一个,而不是一直掉进兔子洞?

【问题讨论】:

    标签: c# sitecore autofixture


    【解决方案1】:

    您观察到的大多数问题的根源在于 Sitecore 实现的非常广泛的 Item API。我建议您查看Sitecore.NSubstituteUtils 库,它可以让物品伪造变得更加容易。之后,您可以配置您的夹具以使用库生成 ItemDatabase 实例:

    fixture.Inject(FakeUtil.FakeDatabase());
    fixture.Register((Database db) => new FakeItem(database: db));
    fixture.Register((FakeItem fakeItem) => fakeItem.ToSitecoreItem());
    

    这应该可以解决问题。

    作为奖励,您还将获得一个流畅的界面来配置各种项目方面(如字段、模板、演示文稿等)。

    【讨论】:

      猜你喜欢
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2016-12-18
      • 2013-06-16
      • 1970-01-01
      相关资源
      最近更新 更多