我们可以在空手道功能中使用Spring bean吗?

时间:2019-02-07 11:36:23

标签: karate

我有一个如下所示的类,可以在空手道功能文件中访问myServer对象或调用handleOperation()方法(可以使用注入的bean)吗?如果是,那我能知道吗?

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {MyApiApp.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(classes = {AcceptanceTestConfiguration.class})
@ActiveProfiles("test")
@KarateOptions(features = "classpath:acceptanceTest/api/myapi.feature", tags = "@myapi")
public class MyAtddTest {
    @Autowired
    private MyServer myServer;

    public void handleOperation() throws Exception {
      myServer.handle();
    }
}

1 个答案:

答案 0 :(得分:1)

不直接支持spring或注释。而且不确定是否可以混合使用测试注释。

但是在这里看看Spring MVC Dispatcher示例:https://github.com/intuit/karate/tree/master/karate-mock-servlet#mocking-your-servlet

具体说来,如何使用Java interop可以完成任何您想做的事情。我建议使用第一原理来获取spring上下文。例如:

ApplicationContext context = new AnnotationConfigApplicationContext(AcceptanceTestConfiguration.class);

然后从中取出豆类。通过System.setProperty()设置测试配置文件应该很简单,进行搜索。您甚至可以在karate-config.js中完成所有这些操作,然后在所有Scenario -s中都应该易于使用。