我目前正在使用自动夹具进行单元测试。
我有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;
如何使用自动固定装置制作一个,而又不用一直钻下去呢?
答案 0 :(得分:0)
您观察到的最多问题的根源是由Sitecore实现的非常广泛的Item
API。我建议您看一下Sitecore.NSubstituteUtils库,它使项目伪造变得容易得多。之后,您可以使用以下库配置夹具以生成Item
和Database
实例:
fixture.Inject(FakeUtil.FakeDatabase());
fixture.Register((Database db) => new FakeItem(database: db));
fixture.Register((FakeItem fakeItem) => fakeItem.ToSitecoreItem());
这应该可以解决问题。
作为奖励,您还将获得一个漂亮的流利的界面来配置各个项目方面(例如字段,模板,演示文稿等)。