如何使用基于集成组件的上下文创建单元测试?
我已经发现问题,因为Extension正在尝试解决实现并返回错误消息:
“对象引用未设置为对象的实例。”
我的课程:
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 :(得分:0)
而不是使用静态WorkflowInvoker.Invoke()新建一个WorkflowInvoker实例,并将一个模拟或测试所需的任何东西,lib.Extension.MyExtenstion添加到Extensions集合。
答案 1 :(得分: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);
// ....
}
答案 2 :(得分:0)
我已经遇到了多个选项,我遇到的问题是MS Workflow。 我已将所有逻辑从工作流代码活动中提取到单独的类中,并且此类已经过测试。
这是我能为此做的最好的事情。由于我有基类,这是注入的,但我不能轻易实现我需要的。
无论如何,谢谢大家的帮助。