7

I have the following unit test for a WF code activity called MyCodeActivity:

[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");
}

When I run the test I get the following exception

'Literal< MyComplexObject>': Literal only supports value types and the immutable type System.String. The type MyComplexObject cannot be used as a literal.

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 に答える