2012-05-08 8 views
0

통합 구성 요소를 기반으로 컨텍스트를 사용하여 단위 테스트를 만드는 방법은 무엇입니까? 내가 확장으로 문제를 식별 한GetExtension을 사용하는 동안 코드 - 활동 단위 테스트 만들기

구현 및 반환 오류 메시지 해결하기 위해 노력하고있다 ". 개체의 인스턴스로 설정되지 않았습니다 개체 참조"

내 클래스 : 지금까지

public sealed class GetListOfServiceIdsToProcess 
{ 
    public InOutArgument<IArguments> Arguments { get; set; } 

    protected override void Execute(CodeActivityContext context) 
    { 

     // I am recieving my error exception here 
     context.GetExtension<lib.Extension.MyExtenstion>(); 

     var targetIds= (List<int>)Settings.Get("targetIds"); 

     var wfa = this.Arguments.Get(context); 
     wfa.ListTargetIds = targetIds; 

     Arguments.Set(context, wfa);    
    } 
} 

내 테스트 :

/// <summary> 
    ///A test for Execute 
    ///</summary> 
    [TestMethod()] 
    public void ExecuteTest() 
    { 
     // create Isettings mock to return collection of service ids 

     var expected = new List<int>() { 30, 20 }; 

     var wfaInput = new TestWorkFlow(); 

     var serviceIdList = new GetListOfServiceIdsToProcess(); 
     var wfParam = new Dictionary<string, object>(); 
     wfParam.Add("WorkFlowArguments", wfaInput); 

     var results = WorkflowInvoker.Invoke(serviceIdList, wfParam); 
     var wfaResult = (IWorkFlowArguments)results["WorkFlowArguments"]; 

     Assert.AreEqual(expected, wfaResult.ListOfServiceIdsToProcess); 
    } 

답변

0

나는 여러 옵션을 통해 실행했고 내가 가지고있는 문제는 MS Workflow입니다. 워크 플로 코드 활동에서 멀리 떨어져있는 모든 논리를 별도의 클래스로 추출했으며이 클래스는 테스트 대상에 포함되었습니다.

이것이 내가 할 수있는 최선의 방법입니다. 기본 클래스가 있으므로 주입되지만 쉽게 필요한 것을 구현할 수 없습니다.

어쨌든 도움 주셔서 감사합니다.

0

을 대신하여 :

내가 테스트의 구현에 문제가 늘어나는만큼 나는 그것을 얻을 수 정적 WorkflowInvoker.Invoke() WorkflowInvoker 인스턴스를 새로 작성하고 모의 객체를 추가하거나 테스트에 필요한 모든 것이 있으면 lib.Extension.MyExtenstion t o Extensions 컬렉션.

0
[TestMethod] 
public void ExecuteTest() 
{ 
    // ... 

    var invoker = new WorkflowInvoker(activityToTest); 

    // This way your extension will be available during execution 
    invoker.Extensions.Add(new MyExtension()); 

    var results = invoker.Invoke(inputArgs); 

    // .... 

} 
관련 문제