当前位置: 首页 > 知识库问答 >
问题:

斯波克Spring靴测试

南宫俊喆
2023-03-14

我在spock和groovy的初始阶段,我试图测试一个简单的Spring启动应用程序,并获得

下面是我的java和groovy代码以及异常详细信息

Condition not satisfied:

mvc.perform(get('/hello')).andExpect(status().isOk())
|           |
|           groovy.lang.MissingMethodException: No signature of method: org.spockframework.controllers.TestControllerSpec.get() is applicable for argument types: (java.lang.String) values: [/hello]
|           Possible solutions: getAt(java.lang.String), grep(), grep(java.lang.Object), wait(), Spy(), getMvc()
org.springframework.test.web.servlet.MockMvc@6bb68f5

at org.spockframework.controllers.TestControllerSpec.spring context loads for web mvc slice(TestControllerSpec.groovy:28)
Caused by: groovy.lang.MissingMethodException: No signature of method: org.spockframework.controllers.TestControllerSpec.get() is applicable for argument types: (java.lang.String) values: [/hello]
Possible solutions: getAt(java.lang.String), grep(), grep(java.lang.Object), wait(), Spy(), getMvc()

and above exception comes when some argument is missing don't what argument and how to pass argument below is my code

TestController.java

@RequestMapping(value = "/hello")
@ResponseBody
public String sayHelloWorld() {
    return "hello world";
}

TestControllerSpec。棒极了

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest
import org.springframework.boot.test.context.TestConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.test.context.ContextConfiguration
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders

import spock.lang.Specification
import spock.lang.Unroll
import spock.mock.DetachedMockFactory

@ContextConfiguration
@WebMvcTest(TestController)
class TestControllerSpec extends Specification {

 @Autowired
 MockMvc mvc;

 @Unroll
 def "spring context loads for web mvc slice"() {

    expect: "controller is available"
    mvc.perform(get('/hello')).andExpect(status().isOk())
 }

 @TestConfiguration
 static class MockConfig {
    def detachedMockFactory = new DetachedMockFactory();
 }
}

我确信我的代码遗漏了什么

共有1个答案

缪兴腾
2023-03-14

您没有导入方法get。请尝试添加

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get

Groovy是动态语言,所以即使您忘记了导入,它也可以让您运行代码,因为您可能会在运行时将方法附加到类。当你在Groovy中写东西时,一定要注意IDE中的警告(在其他语言中也是如此,但在Groovy中尤其如此)。

 类似资料:
  • 我有一个关于SPOCK+Drools测试的问题。事情是这样的, 我正在部署的webapp W/O中运行测试(如果这有任何意义的话:))。我将jar添加到类路径中(而不是WEB-INF/libs),现在运行良好。

  • 例如,有没有办法测试给定的Groovy类是否有@Slf4j注释? 这是在TDD上下文中:在看到失败的测试之前,我不想添加注释。

  • 我想探听Spring Bean的方法调用。我检查了Docs-Spock只能通过构造函数创建间谍。Spock可以用间谍包裹已经存在的物体吗?

  • 我在spock框架测试方面是非常新的,我没有找到任何可以找到所需信息的例子。因此,我认为最好的方法是向一个例子展示我需要拥有的东西。 > 例如。斯波克的测试类: 将数据作为域类: 现在我有了测试,并且想模拟唯一的方法。这意味着每次调用时,都需要有msg成功的对象数据,但是方法中的所有其他方法都应该正常调用。 很可以理解吗?问题是如何将服务类注入/模拟到spock测试类中?

  • 当我尝试执行以下操作时: 我得到以下错误: 但是,当我执行时,它工作得很好。 有什么想法吗?我在类中有一个随机生成器(ak),所以我需要间谍而不是嘲笑。 谢谢。