【问题标题】:how to do a dependancy injection with a method in micronaut for unit testing如何使用 micronaut 中的方法进行依赖注入以进行单元测试
【发布时间】:2020-11-13 03:14:41
【问题描述】:

我有一个控制器类:

@Controller("/x")
class Controller {

@Get
fun index(): String {
    return "test test"
}

@Post
fun dopost (userid) = executelogin(login.userId)
}

这个控制器依赖于下面的 executelogin 方法:

fun executelogin(userid) =
   do things

如果我想编写一个单元测试,我将如何使用依赖注入来引入一个版本的 executelogin 方法。以下是我到目前为止的内容,我不确定我是否正确:

@MicronautTest
class Controllertest(val method: executelogin()) {



@Inject
    lateinit var client: RxHttpClient


@Test
fun testController(){
    val request: HttpRequest<String> = HttpRequest.POST("/hello","test")
    val body: String = client.toBlocking().retrieve(request)

    assertNotNull(body)
    assertEquals(method,method)
    
}
}

在上面的单元测试中,我将executelogin 方法作为controllertest 类的参数,我相信这称为方法注入。我想知道这是否是解决此问题的正确方法,或者是否需要进行调整。如果某些代码不太有意义,我深表歉意,我是 micronaut 和依赖注入概念的新手。

【问题讨论】:

    标签: unit-testing kotlin dependency-injection inversion-of-control micronaut


    【解决方案1】:

    如果我想编写一个单元测试,我将如何使用 依赖注入引入一个版本的executelogin 方法。

    您不能使用依赖注入来引入executelogin 方法的版本,至少不能直接使用。 Micronaut 不支持方法注入。

    这不是您所要求的,只是作为一个仅供参考...通常要做的事情是注入一些包含您要调用的方法的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      相关资源
      最近更新 更多