2

我想知道是否有人对在 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 返回此错误:

设置:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:“ Moq.Language.Flow.ISetup<Aqovia.Module.MotionGallery.Infrastructure.IClayWrapper,object>”不包含“ Returns”的定义

基本上,它将Returns方法从 Moq 更改为动态调用,这是我在尝试包装 Clay 材料之前面临的主要问题之一。我还尝试引入具有类似结果的假形状工厂。有没有人找到一种有效的方法来测试这些东西?除了不测试吗?

4

1 回答 1

0

重点是什么?模拟动态对象是荒谬的,因为您可以比模拟更容易地构建它们,这就是动态语言中通常没有模拟框架的原因:您不需要它们。只需使用真正的粘土对象。

您可能还想知道 Clay 不会随 Orchard 1.7 一起提供。

于 2012-12-20T17:13:51.783 回答