ZIO 测试 TestAspect:避免 @@ 所有测试

问题描述 投票:0回答:1

在此示例代码中,我有 2 个 Spec,并且我想对它们执行一些操作,然后我必须调用 @@ TestAspect.before 来进行这两个测试。如果测试数量增加,将 @@ TestAspect 添加到所有测试/套件听起来不是一个好主意,如何避免这种情况?

import zio._
import zio.test._
import zio.test.Assertion._


object WorldSpec extends ZIOSpecDefault {   
  def spec = suite("HelloWorldSpec")(
    test("simple test") {
      assertTrue(1 + 1 == 2)
    }   
  ) @@ TestAspect.before(
      doBeforeFunctions   
  ) 
}


object UniverseSpec extends ZIOSpecDefault {   
  def spec = suite("HelloUniverseSpec")(
    test("sayHello correctly displays output") {
     assertTrue(2 + 2 == 4)
    }
  ) @@ TestAspect.before(
      doBeforeFunction   
  ) 
}
scala zio zio-test
1个回答
1
投票

好吧,如果你愿意的话,你总是可以进行旧的子类化......

abstract class MySpec { 

   def actualSpec:  Spec[TestEnvironment with Scope, Any]
   override def spec = actualSpec @@ before(doBeforeFunction)
}

但是……为什么?在这一点上,似乎在每个规范中编写

@@ before
几乎不那么费力,而且很快,你就会变得更加分歧......

© www.soinside.com 2019 - 2024. All rights reserved.