Describe Spec スタイルを使用して、JUnit5 で実行されるKotlinTestテストを作成しようとしています。
一部のテストで同じ変数を初期化する必要がある場合、@BeforeEach は DescribeSpec 内では機能しません。
各テストの前にデータを初期化するにはどうすればよいですか?
class BlockchainUT : DescribeSpec({
var blockchain = Blockchain()
@BeforeEach
fun beforeEach() {
blockchain = Blockchain()
blockchain.addBlock(listOf("foo1", "bar1"))
blockchain.addBlock(listOf("foo2", "bar2"))
blockchain.addBlock(listOf("foo3", "bar3"))
}
describe("isValidChain()") {
context("when the chain does not start with the genesis block") {
blockchain.chain[0] = Block(
System.currentTimeMillis(),
"---",
"xxx",
listOf("foo", "bar"))
it("returns false") {
Blockchain.isValid(blockchain) shouldBe false
}
}
context("when the chain starts with the genesis block and has multiple blocks") {
context("and a lastHash reference has changed returns false") {
blockchain.chain[2] = Block(
blockchain.chain[2].timestamp,
"broken-lastHash",
blockchain.chain[2].hash,
blockchain.chain[2].data)
it("returns false") {
Blockchain.isValid(blockchain) shouldBe false
}
}
context("and the chain contains a block with an invalid field") {
blockchain.chain[2] = Block(
blockchain.chain[2].timestamp,
blockchain.chain[2].lastHash,
blockchain.chain[2].hash,
listOf("some-bad-and-evil-data"))
it("returns false") {
Blockchain.isValid(blockchain) shouldBe false
}
}
}
}
})