我在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();
}
}
我确信我的代码遗漏了什么
您没有导入方法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),所以我需要间谍而不是嘲笑。 谢谢。