gpt4 book ai didi

java - Kotlin Spek 中的组执行顺序错误

转载 作者:行者123 更新时间:2023-11-28 20:51:09 24 4
gpt4 key购买 nike

这是我的测试:

object MySpek : Spek({
val myMock1: MyMock1 = mock()
val myMock2: MyMock2 = mock()
val handler = StartModeHandler(myMock1, myMock2)

val session = mock<Session> {
on { user }.doReturn(User.builder().withUserId("userId").build())
}
describe("item exists for user") {
beforeGroup {
reset(digitalPointDao, trackDao)
}
whenever(myMock1.loadItem(session.user.userId)).thenReturn(Optional.of(MyItem()))
whenever(myMock2.loadSomething()).thenReturn(ArrayList())
context("method onLaunch was called") {
val response = handler.onLaunch(session)
it("should return the response for existing user") {
//some asserts here
}
it("should save the item") {
//some mock verifies here
}
}
}
})

根据 Spek 文档,我希望流程如下:

  1. 在描述之前初始化所有内容
  2. 调用beforeGroup
  3. 初始化描述主体,例如我每当需要模拟时
  4. 运行上下文
  5. 运行每个 it 方法

但我得到以下流程:

  1. 在描述之前初始化所有内容
  2. 运行我的 describe body 例如我每当需要模拟时
  3. 运行上下文
  4. 运行前组
  5. 运行每个 it 方法

我是不是漏掉了什么,做错了什么?

最佳答案

如 Spek 文档组范围(给定、描述、上下文)中所述,将急切地执行其中的任何代码。任何测试状态初始化都应该在固定装置(beforeEachTest、beforeGroup 等...)内完成。您还可以使用 memoized 创建与 Spek 生命周期相关的依赖项。

object MySpek: Spek({
val myMock1 by memoized { mock<myMock1>() }
val myMock2 by memoized { mock<myMock2>() }

val handler by memoized { StartModeHandler(myMock1, myMock2) }

val session by memoized {
mock<Session> {
on { user }.doReturn(User.builder().withUserId("userId").build())
}
}

describe("item exists for user") {
beforeEachTest {
reset(digitalPointDao, trackDao)
whenever(myMock1.loadItem(session.user.userId)).thenReturn(Optional.of(MyItem()))
whenever(myMock2.loadSomething()).thenReturn(ArrayList())
}

// use on instead of context
on("method onLaunch was called") {
val response = handler.onLaunch(session)
it("should return the response for existing user") {
//some asserts here
}
it("should save the item") {
//some mock verifies here
}
}

}
})

关于java - Kotlin Spek 中的组执行顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46130820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com