我想知道是否有人有任何关于在Orchard中模拟一些Clay功能的有效方法的建议?我已经创建了一个包装器接口IClayWrapper
,我将其包含在一些更复杂的动态调用中。不幸的是,这些包装器方法需要返回动态对象,所以我仍然遇到问题。这是一个小例子:
public interface IClayWrapper : IDependency
{
dynamic BuildClipCreateViewModel(string projectTitle, string moduleTitle, dynamic clipForm);
}
public class WhenViewingCreateClip : GivenAClipController
{
private IEnumerable<ContentItem> queryResults;
protected override ClipController Establish_context()
{
var queryResults = new List<ContentItem>
{
new ContentItem(),
new ContentItem(),
};
ClayWrapperMock.Setup(x => x.BuildLookupListFromQuery(queryResults, "Create")).Returns(It.IsAny<dynamic>());
}
}
我目前面临的问题是Moq会返回此错误:
SetUp:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:'
Moq.Language.Flow.ISetup<Aqovia.Module.MotionGallery.Infrastructure.IClayWrapper,object>
'不包含“Returns
”的定义
基本上,它将Returns
方法从Moq更改为动态调用,这是我在尝试包装之前遇到Clay主要问题之一。我也试过引进一个假造型工厂,结果相似。有没有人找到一种有效的方法来测试这些东西?除了不测试它?
答案 0 :(得分:0)
重点是什么?模拟动态对象是荒谬的,因为你可以比模拟更容易地构建它们,这就是动态语言中通常没有模拟框架的原因:你不需要它们。只需使用真正的Clay对象。
您可能还想知道Clay不会随Orchard 1.7一起发货。