自动修复以及如何使用它们

时间:2019-01-07 19:14:07

标签: c# sitecore autofixture

我目前正在使用自动夹具进行单元测试。

我有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:找不到配置节点:数据库/数据库[@ id ='databaseName2df4ec17-4d66-41bf-aa2f-75ed1ddd266a']

我只是试图生成一个有效的媒体项目media.MediaData.MediaItem.InnerItem;

如何使用自动固定装置制作一个,而又不用一直钻下去呢?

1 个答案:

答案 0 :(得分:0)

您观察到的最多问题的根源是由Sitecore实现的非常广泛的Item API。我建议您看一下Sitecore.NSubstituteUtils库,它使项目伪造变得容易得多。之后,您可以使用以下库配置夹具以生成ItemDatabase实例:

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

这应该可以解决问题。

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