【发布时间】:2013-12-07 18:06:10
【问题描述】:
在我们当前的应用程序中,我们正在尝试使用 WCF netMSMQBinding,它需要将 Operation Contract 标记为 One Way。
我们也在尝试使用 Fitnesse 作为我们的测试引擎,在我们的测试用例中,我们需要对场景进行端到端的测试,这意味着我们不能使用 One Way Operations,因为它们会在收到消息后立即返回被放置在队列中,fitnesse 将尝试断言结果,但实际消息可能尚未处理,也可能尚未处理。因此,如果我们使用单向操作,那么我们需要以某种方式等待它的执行完成。
尝试/研究的方法..
-
通过阅读在托管时更改 OperationDescription 配置,这样当 Hosted in Fitnesse IsOneWay 为 False 时, 但在生产中 IsOneWay 是 True 然后用户 MSMQ 仅绑定 在生产和测试中使用 tcp 或 netnamedpipe。
我们尝试创建自定义 ServiceHost 并更改 服务打开前的 OperationDescription,但在 OperationDescription 类 IsOneWay 是只读属性,并且由 查看 .Net 框架代码,它返回消息计数。在我的 意见,我必须重写 Service 的 CreateDescription 操作 主机并且必须提供自定义实现。好像
-
在 Fitnesse 中创建一个 Monitor Fixture,它会以某种方式等待消息发出 已处理。
方法 1:创建存储 MessageId 并完成的自定义 db 表 状态并在每个消息处理结束时输入 记录在该表中。所以现在fitnesse fixture可以轮询 表并等待执行完成。
方法 2:以某种方式轮询 MSMQ 并知道何时处理消息。我们仍是 重新研究如何使它工作。
请对当前方法或任何新方法提出任何建议。
【问题讨论】:
标签: wcf fitnesse netmsmqbinding isoneway