1

scala テスト クラスの内容を spec から specs2 に「転送」するのに苦労しています。私が持っている最後のことは問題doBefore{}です"test" in {}

"testing" should { doBefore{} と何人か "getting" in {} }は私にこのエラーを与えます

説明 リソース パス ロケーション タイプ

タイプ org.specs2.execute.AsResult[Unit] の証拠パラメーターの暗黙的な値が見つかりませんでした

「Unit」は私のプロジェクトのクラスだと思いますが、両方ともdoBeforein {}も返さないので、何が起こっているのかわかりません。

MydoBeforeは、たとえば、いくつかのクラスにランダムな値を入力するだけです(これはクラスにありますextends SpecificationWithJUnit with TestUtil with BeforeExample with AfterExample

"retrieving and counting users by criteria" should {

    var user1: User = null
    var user2: User = null
    var user3: User = null

    doBefore {
        val params = Map("login" -> "notExist", "roles" -> Seq(someRoles).asJava
        val params2 = Map("login" -> "notExistAnother", "roles" -> Seq(someRoles).asJava
        val params3 = Map("login" -> "notExistAnotherAnother", "roles" -> Seq(someRoles).asJava).asJava
        val users = Seq(params, params2, params3).map( { PopulateUser.insertUserParams(_).asInstanceOf[User] })
        user1 = users(0)
        user2 = users(1)
        user3 = users(2)
    }

私は Scala にはかなり慣れていませんが、specs2 で doBefore が異なるように見えることを読んだことがありますが、正直なところ、コードにこれをどのように実装すればよいかわかりません。私はこれを読んでいました。したがって、誰かがコードにこれを実装する方法とその原因を知っています(仕様と仕様2の違いは巨大ですが、どういうわけか私のテスト(doBeforeを除く)は同じエラーを発生させることはほとんどありません)

4

2 に答える 2

1

あなたのテストは何もテストしません。メソッドの最後の式はメソッドの戻り値であり、specs2がResultに変換できるものでなければなりません。最後に返される値は do の結果であり、これはUnitであり、テスト**結果**に変換することはできません。それが与えられたエラーの原因です。

could not find implicit value for evidence parameter of type org.specs2.execute.AsResult[Unit]

doBefore使用するときは問題ありませんが、後で何らかのテストを行う必要があります。

詳細については、 http: //etorreborre.github.io/specs2/guide/org.specs2.guide.Structure.html#Structure を参照してください。Specs2 ユニットおよび受け入れテストでビフォアおよびアフターを使用する方法を説明する特別なセクションがあります。

一般に、 Acceptance Testスタイルに切り替えることで多くの利益を得ることができます。

于 2014-04-25T15:56:48.790 に答える