gpt4 book ai didi

.net - 如何对工作流的一部分进行单元测试?

转载 作者:行者123 更新时间:2023-12-04 05:07:24 26 4
gpt4 key购买 nike

我打算只测试一个工作流序列(它不是一个单独的 CodeActivity)。
有没有一种方法可以只调用所需的 Sequence 并传入所需的参数?

感谢您的关注。

最佳答案

答案是:不,你不能。

至少效率不高。您可以对工作流的 XAML 进行大量思考。我想到了提取内部序列,但请不要这样做!

如果您的序列使用在外部作用域上分配的局部变量呢?这只是一种认为在测试隔离的内部序列时可能会出错的想法。

无论如何,你为什么要做这样的事情?这就像对另一个方法内部的方法调用进行单元测试。要么调用外部方法(工作流本身),要么隔离内部方法(序列)以对其进行测试。

编辑:

好的,如果你想这样做,并计算你有一个具有庞大工作流程的 XAML,也许你可以摆脱这样的事情:

将 XAML 加载到事件中:

var activity = ActivityXamlServices.Load("c:\hugeworkflow.xaml");

有了你的序列化事件,并计算你知道内部序列在哪里,在 activity 中搜索它。 .假设该序列在另一个序列(即工作流根)内:
var rootSequence = activity as Sequence;

var innerSequence = rootSequence
.Activities
.FirstOrDefault(a => a is Sequence) as Sequence;

现在您可以像这样执行内部序列:
var arguments = new Dictionary<string, object> 
{
{ "IntArgument", 10 },
{ "StringArgument", "hello world" }
};

WorkflowInvoker.Invoke(innerSequence, arguments);

你怎么能从一个序列中断言某些东西,我不知道。

尚未测试任何此代码,因此可能会丢失某些内容,但您明白了。

关于.net - 如何对工作流的一部分进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com