首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在具有独立运行的空手道DSL功能文件中使用模拟

在具有独立运行的空手道DSL功能文件中使用模拟
EN

Stack Overflow用户
提问于 2018-10-09 03:40:02
回答 1查看 3.6K关注 0票数 4

我有REST服务,是用不同于Java的语言编写的。它与其他REST服务几乎没有依赖关系。

例如,正在开发和测试的服务是A,其他服务分别是BC

我想为A运行系统测试,某些测试要求B或/和C在线,并从A执行查询。

我编写了b-mock.featue和c-mock.feature来表示mock中的服务。

我还编写了一些a--smth.feature文件来对A运行测试

有没有可能在a- test -smth.feature中添加一些信息来启用一些用于具体测试的mock?

现在我应该运行两次独立的karate.jar,第一次是为了模拟。second -用于运行测试。这种方法是有效的,但我不能否认这一点:

A的某些API调用不需要BC

  • can't模拟服务B关闭,或者例如,获取

的响应答案缓慢或不正确

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-09 11:38:27

你在使用Java吗?如果是这样,那么最好的方法是在Java代码中执行测试设置。您可以为B和C启动两个mock,然后为您的服务A启动主测试,并在最后根据需要进行清理。

您可以将其作为示例:https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example

第3行显示了如何启动模拟并运行空手道测试。

如果您不使用Java,并且只想使用独立的JAR,那么使用Java-interop实际上是可行的,而且非常简单,我刚刚尝试了一下。

编辑:这个接口现在内置于空手道中,所以你不需要在下面写额外的JS代码:https://github.com/intuit/karate/tree/master/karate-netty#within-a-karate-test

(已过时)

首先,创建这段足够智能的JavaScript代码来启动一个空手道模拟:

代码语言:javascript
复制
function() {
  var Mock = Java.type('com.intuit.karate.netty.FeatureServer');
  var file = new java.io.File('src/test/java/mock/web/cats-mock.feature');
  var server = Mock.start(file, 0, false, null);
  return server.port;
}

这就是它在你的主要空手道测试的Background中的样子。如果需要,您可以看到如何执行一些条件逻辑,并且您有很多方法可以根据您的环境进行更改。

代码语言:javascript
复制
Background:
    * def starter = read('start-mock.js')
    * def port = karate.env == 'mock' ? starter() : 8080
    * url 'http://localhost:' + port + '/cats'

这回答了你的问题吗?让我知道,我会将这个技巧添加到文档中!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52709019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档