Groovy特征:找不到匹配方法错误

时间:2018-03-10 12:18:42

标签: groovy spock

我试图使用Spock和Groovy进行测试。我已经编写了简单的类/特性进行测试,如下所示:

import com.plomber.user.domain.UserDto
import groovy.transform.CompileStatic
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
@CompileStatic
trait SampleUsers {

    UserDto John = createDto(1, "john@example.com", "simpleJohn1")
    UserDto Bob = createDto(2, "Bob@example.com", "simpleBob1")


    static private UserDto createDto(Integer id, String email, String password) {
        return UserDto.builder()
                .id(id)
                .email(email)
                .password(new BCryptPasswordEncoder().encode(password))
                .build()
    }
}

我尝试编译时遇到以下错误:

Error:(10, 20) Groovyc: [Static type checking] - Cannot find matching method com.plomber.SampleUsers#createDto(int, java.lang.String, java.lang.String). Please check if the declared type is right and if the method exists.

如果我使用John而不是Bob方法分配UserDto.builder().id(id) ...createDto()字段,则可以按预期工作。我想念一下吗?

1 个答案:

答案 0 :(得分:0)

来自groovy docs:

  

静态方法的特征无法静态编译或输入   检查。动态访问所有静态方法/属性/字段   (这是JVM的限制)。

http://docs.groovy-lang.org/next/html/documentation/core-traits.html#_static_methods_properties_and_fields