2013-05-14 10 views
7

Ho il seguente test unità per un'attività codice di WF chiamato MyCodeActivity:Workflow Foundation - letterale supporta solo i tipi di valore e il tipo immutabile System.String

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

Quando eseguo il test ottengo la seguente eccezione

'Letterale < MyComplexObject>': Literal supporta solo i tipi di valore e il tipo immutabile System.String. Il tipo MyComplexObject non può essere utilizzato come letterale.

+0

Qual è la traccia dello stack? – SLaks

+0

Forse questo potrebbe anche aiutarti: http://support.microsoft.com/kb/2013194 –

risposta

11

Per risolvere il problema immediato:

MyComplexObject = _complexObject 

a

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

Ulteriori approfondimenti: http://msdn.microsoft.com/en-us/library/ee358749.aspx.

Nota: È inoltre necessario utilizzare il pacchetto Microsoft.Activities.UnitTesting disponibile su NuGet. Rende più facile l'IOC (visto che WF funziona con il modello di Service Locator e non con Iniezione delle dipendenze)

Problemi correlati