7

我对名为 MyCodeActivity 的 WF 代码活动进行了以下单元测试:

[ExpectedException(typeof(ArgumentException))]
[TestMethod]
public void ShouldRequireParam()
{
    //arrange
    var invoker = new WorkflowInvoker(new MyCodeActivity()
    {
        MyInt = 2,
        MyComplexObject = _complexObject
    });

    //act
    invoker.Invoke();

    //assert
    Assert.Fail("Expected ArgumentException");
}

当我运行测试时,出现以下异常

'Literal<MyComplexObject>':Literal 仅支持值类型和不可变类型 System.String。MyComplexObject 类型不能用作文字。

4

1 回答 1

12

要解决眼前的问题:

MyComplexObject = _complexObject

MyComplexObject = new InArgument<MyComplexObject>((ctx) => _complexObject)

进一步阅读:http: //msdn.microsoft.com/en-us/library/ee358749.aspx

注意:您还应该使用 NuGet 上提供的Microsoft.Activities.UnitTesting包。它使 IOC 更容易(看到 WF 使用服务定位器模式而不是依赖注入)

于 2013-05-14T22:50:07.760 回答