gpt4 book ai didi

web-services - 模拟Biztalk请求-响应端口占用的WebService

转载 作者:行者123 更新时间:2023-12-04 03:47:41 27 4
gpt4 key购买 nike

我正在使用BizUnit对Biztalk编排进行单元测试,但是一些编排消耗了WebService,并且测试这些似乎更像是集成测试而不是单元测试。

我熟悉使用模拟框架模拟生成的代理对象,以便从Windows Forms应用程序测试Web服务,但是我希望能够以更加集成的方式在请求-响应端口中进行操作?

您将如何解决这个问题?

最佳答案

作为BizTalk开发人员,这是我最主要的烦恼之一-BizTalk不会将其用于单元测试。从您进入BizTalk应用程序的接口(interface)的99%事实上都是基于消息的,并且具有大量可能的输入,再到业务流程的不透明性,BizTalk并没有提供测试功能单元的真正方法。单位。

对于BizTalk,可悲的是,集成测试通常是市面上唯一的游戏。

由于凯文·史密斯(Kevin Smith)的过错,这导致BizUnit(IMO)被误用。更好的名称可能是BizIntegrationIt。 BizUnit提供了一系列工具,可以帮助进行集成测试(大部分测试),例如检查文件是否已写入给定目录或将HTTPRequest发送到BizTalk HTTPReceive位置,这些都是严格意义上的测试集成的工具。

现在,我已经大声疾呼了,您所要的是我很长一段时间以来一直在考虑的事情,能够创建自动化的单元测试,这使我对在 map 上做的一些小改动赢得了真正的信心,这使我充满了信心。不会突然破坏下游的其他东西,以及消除对外部服务的依赖的方法。

我从来没有想过这样做的任何好方法,但是下面是应该工作的解决方案,我已经单独完成了每个部分的变体,但从未尝试过以这种特定形式将它们放在一起。

因此,由于希望模拟对某个外部服务的调用(甚至可能还不存在),而无需实际进行任何外部调用,因此希望能够为该服务调用设置期望并指定请求的性质。响应,我能想到的唯一方法是开发自定义适配器。

使用自定义适配器模拟Web服务

如果您构建定制的请求-响应适配器,则可以将其插入到您的发送端口中,以代替SOAP适配器。然后,您可以为适配器指定属性,以使其能够模拟Web服务。该适配器在概念上与回送适配器相似,但将允许内部模拟逻辑。

您可能希望将其包括为适配器属性的内容:

  • 所需的文档(也许是一个磁盘位置,它指定您希望BizTalk应用程序发送到Web服务的示例)。
  • 响应文档-适配器将发送回消息传递引擎的文档。
  • 对测试的特定期望,例如文档元素中的查找值。

  • 您还可以使自定义适配器写入磁盘,并设置BizUnit步骤以验证已写出的文件。

    构建定制适配器并非易事,但可以的话,您可以从 BizTalk Adapter Wizard获得一个良好的开端,并且有一篇有关部署定制适配器 here的文章。

    向导生成的代码中存在错误,您需要将 new Guid(""),更改为 new Guid()

    还有一些在BizTalk SDK中构建自定义适配器的示例。

    另一个选择是使用简单的http页面和如 here所讨论的HTTP请求响应,所有逻辑都放在http页面中。如果您愿意进行http调用并设置IIS端口以监听您的测试,则这可能会更简单。

    初始化单元测试

    您可以使用.bat文件将绑定(bind)文件导入BizTalk应用程序。

    如果为运行的每个测试以及标准应用程序设置了新的绑定(bind)文件,则可以运行适当的批处理文件以应用正确的绑定(bind)。

    每个绑定(bind)文件都会将您的Web服务发送端口更改为使用模拟自定义适配器,并设置该测试的特定属性。

    然后,您甚至可以执行一个自定义BizUnit步骤,该步骤(也许)基于测试步骤中的设置生成绑定(bind)设置,然后运行shell命令以更新绑定(bind)。

    测试邮件内容

    要将所有这些真正结合在一起,您可能要考虑的最后一件事是测试消息内容的某种方式。您可以在模拟适配器中执行此操作,但是对于大型消息或大量可能的输入消息而言,这将很快变得乏味。

    一种选择是制作一个自定义管道,该管道调用 Schematron来验证接收到的文件。 Schematron是一种架构语言,它允许对xsd进行更丰富的文件检查,因此您可以检查诸如“如果元素x包含此内容,我希望元素y存在”之类的内容。

    如果您构建了一个以schematron模式作为参数的自定义管道,则可以在测试文件中交换特定的单元测试,以对此测试进行验证,当您调用Web服务时,您会得到一个与所需内容实际匹配的文件(并且不仅仅与xsd相匹配)

    关于web-services - 模拟Biztalk请求-响应端口占用的WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256897/

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