Workflow Foundation - Literal поддерживает только типы значений и систему неизменяемых типов.Строка

У меня есть следующий модульный тест для действия кода WF под названием 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");
}

когда я запускаю тест, я получаю следующее исключение

' Literal': Literal поддерживает только типы значений и систему неизменяемых типов.Строка. Тип MyComplexObject нельзя использовать в качестве литерала.

1 ответов


чтобы исправить непосредственную проблему:

MyComplexObject = _complexObject

to

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

дальнейшее чтение:http://msdn.microsoft.com/en-us/library/ee358749.aspx .

Примечание: вы должны использовать Microsoft.Деятельности.UnitTesting пакет доступен на NuGet. Это делает IOC намного проще (поскольку WF работает с шаблоном локатора служб, а не с инъекцией зависимостей)