- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要断言工作流服务中变量的值。
我已经下载并正在使用 CodePlex 中的 Microsoft.Activities.UnitTesting 框架来测试工作流服务端点、返回值和流程逻辑 - 但我需要在调用端点后验证变量的值,并且得到回应 - 这可能吗?
如果不是,是否有其他类型的解决方法可能有效,但不涉及更改工作流程本身以生成输出参数?因为在生产时我肯定不需要它。
谢谢!
更新2.A
目前使用 stub 方法而不是 WCF 方法来测试服务。
[TestMethod]
[DeploymentItem(@"TestService\Service1.xamlx")]
public void TestValueOfInteger1AfterStart()
{
// inject the mocks into the service
var xamlInjector = new XamlInjector("Service1.xamlx");
xamlInjector.ReplaceAll(typeof(Receive), typeof(ReceiveStub));
xamlInjector.ReplaceAll(typeof(SendReply), typeof(SendReplyStub));
// setup the messages
var stubExtension = new MessagingStubExtension();
// enqueue a message for the receive activity using parameters content
stubExtension.EnqueueReceive(XName.Get("{http://tempuri.org/}IService"), "Start", null);
// setup the host
var host = WorkflowInvokerTest.Create(xamlInjector.GetWorkflowService().Body);
host.Extensions.Add(stubExtension);
try
{
host.TestActivity();
...
更新2.B
因此,经过更多努力,我发现如果使用 stub ,我可以通过反射恢复上下文,而不是使用 WCF 端点进行单元测试。上面是 stub 单元测试代码的摘录,下面是我用来获取刷新的 ActivityContext 的反射代码。但是,现在我在尝试获取变量的值时遇到以下错误。
有趣的是,您可以清楚地看到上下文所绑定(bind)的事件就是定义它的事件 - 糟糕的框架只是有点困惑。
...
const BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance;
// recover the WorkflowInstance
var proxy = stubExtension.GetType().GetProperty("InstanceProxy",
bindingFlags).GetValue(stubExtension,
bindingFlags,
null,
null,
null) as WorkflowInstanceProxy;
// recover the WorkflowInstance
var fieldInfo = proxy.GetType().GetField("instance", bindingFlags);
var workflowInstance = fieldInfo.GetValue(proxy) as WorkflowApplication;
// recover the ActivityExecutor
fieldInfo = workflowInstance.GetType().BaseType.GetField("executor", bindingFlags);
dynamic activityExecutor = fieldInfo.GetValue(workflowInstance);
// recover the rootInstance
fieldInfo = activityExecutor.GetType().GetField("rootInstance", bindingFlags);
var rootInstance = fieldInfo.GetValue(activityExecutor) as ActivityInstance;
// recover the cachedResolutionContext
fieldInfo = activityExecutor.GetType().GetField("cachedResolutionContext", bindingFlags);
var cachedResolutionContext = fieldInfo.GetValue(activityExecutor) as ActivityContext;
MethodInfo methodInfo = cachedResolutionContext.GetType().GetMethod("Reinitialize", bindingFlags);
methodInfo.Invoke(cachedResolutionContext, bindingFlags, null, new object[]
{
rootInstance,
activityExecutor
}, null);
var val = (int)((Sequence)rootInstance.Activity).Variables.First(x => x.Name == "integer1").Get(cachedResolutionContext);
Assert.AreEqual(val, 1, "The integer value of integer1 is not correct.");
最佳答案
您可以使用 AppFabric 跟踪并监视变量。
但是,这个问题提出了进一步的问题:如果您已经在测试流程逻辑和输出,为什么还需要测试 wf 实例的内部状态?
关于workflow-foundation - 在单元测试期间断言 WF 服务变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672878/
我真的在为一个非常不寻常的问题而苦苦挣扎。我们刚刚将开发堆栈升级到 Visual Studio 2012/.NET 4.5。 我们要升级到最新版本的 Workflow Foundation (4.5)
我长期以来一直在努力寻找一个令人信服的工作流用例(即:WF)来对抗常规的命令式编程。每次我都会得出这样的结论:我应该把 WF 排除在外,或者推迟到以后再做。但我总有一种挥之不去的感觉,总觉得缺少了一些
在过去的几年里,我使用 3.5 进行了相当多的 WF 开发,但我现在才开始使用 4.0 中的 WF。我有 TDD 倾向,虽然 WF 3.5 有时很难进行单元测试,但我想知道是否有人可以分享他们在 WF
我们目前正在使用 Google 的 WebFont Loader 来加载我们的自定义 @font-face 字体。该工具应该通过允许我们使用 css 类在加载字体时隐藏文本来消除 fout。不幸的是,
有没有人在工作流事件之外使用 WF 规则引擎而不使用规则编辑器或 CodeDOM? 场景 我正在尝试将工作流基础类附带的规则引擎与 .Net Framework 一起用于基于 Web 的应用程序。在使
当使用具有持久性的 Workflow Foundation 时,我们想删除一些(或全部)工作流,这些工作流不再应该被持久化/运行。 我可以使用任何脚本/工具吗? 最佳答案 没有可用于执行此操作的标准
我正在学习 WF,同时设想我正在为工业自动化开发的系统。物理过程是一个工作流。例如,该过程涉及控制 6 自由度机器人拾取机械零件并将其通过一系列工作站。一些工作站涉及测试并且可能会失败,因此工作流程变
我正在写一个长而详细的问题,但只是将其废弃以支持一个我在这里找不到答案的更简单的问题。 应用简介: 我有一个生成多个线程的 WPF 应用程序,每个线程都执行自己的 WF。处理线程和 WF 中允许从 G
首先让我说我喜欢这个网站,并且经常在我不得不发帖之前找到我问题的答案。现在我有一个问题,我似乎无法找到答案。我还要提一下,我对编程有些陌生,才开始编程几个月。 有了这个,这里就是发生的事情。 我有一个
将以下代码添加到我的 CSS 是否可以在 Google 的网络字体处于非事件状态时提供替代字体?我所做的只是将以下链接添加到我的 HTML 中: 我已将其添加到 CSS: .wf-inactive
我有一个在 Windows 服务中启动的 WorkflowServiceHost。一切正常,但一段时间后服务停止响应请求。查看跟踪日志,我可以看到抛出异常 - 在本例中是通过简单加载元数据页面 - 关
我有一个自定义跟踪服务,现在已经运行了一段时间,有超过 1500 个实时工作流在运行,我现在正在对工作流进行版本控制,以便我可以发布一些更改请求。 不幸的是,该系统最初并没有使用强类型程序集部署,所以
虽然 WF 4.0 beta1 发布了,但我们在网上没有太多资源来理解这些概念......我知道很多博主一直在发布一些关于 WF 4.0 的 Material 。如果我们在这里分享所有资源,那就太好了
目前有一个简单的工作流作为服务端点公开。该服务与工作流实例 ID 相关联,一切都按预期工作(2 个服务调用可用 ReceiveBegin、Execute)。 我的问题是我希望用户能够通过在工作流上调用
我需要断言工作流服务中变量的值。 我已经下载并正在使用 CodePlex 中的 Microsoft.Activities.UnitTesting 框架来测试工作流服务端点、返回值和流程逻辑 - 但我需
调试 WF 4 工作流服务(托管在 IIS 7.5/AppFabric 中)时如何查看工作流变量的当前值? 我将 Visual Studio 2010 附加到 w3wp.exe,但是当事件上的断点被命
我有一个简单的业务工作流程,具有以下条件 用户需要使用设计器更改工作流程本身 工作流是一个冗长的工作流,所以会被序列化 有没有办法自动化不同工作流程序集的版本控制任务? 最佳答案 不同工作流程序集的版
我试图禁止人们删除富文本框中的文本框。该项目使用的是windows窗体。 这是我的代码: private void Form1_Load(object sender, EventArgs e)
我想弄清楚 ms Workflow WF 4 在以下情况下是否可用?尝试在 asp.net mvc 3 中创建 Web 应用程序。 办公室里有一种情况,有不同的角色。表单必须通过不同角色(项目经理、团
我想从工作流中调用一个简单的方法(无参数,返回无效)。假设我有以下类(class): public class TestClass { public void StartWorkflow()
我是一名优秀的程序员,十分优秀!