scalaとscalatestを使用して、特定の値に一致するフィールドを持つオブジェクトがリストに含まれているかどうかを確認するにはどうすればよいですか?

ジョパリー

オブジェクトのリストに特定の一致フィールドを持つオブジェクトが含まれていることをテストで確認したいと思います。例えば:

class ListTest extends ScalaTesting {
    class MyData(val one:Int, val two:Int) {
    }

    val listOfMyData = List(new MyData(1,2), new MyData(3,4)

    listOfMyData should contain (a mydata object with field two matching 4)
}

明らかに、これは実際には機能しません

prayagupd

リストのフィールドをアサートする必要があるときはいつでも.map、リストを調べて値を比較します。

例えば。

class SomeSpecs extends FunSuite with Matchers {

  test("contains values") {

    case class MyData(field1: Int, field2: Int)

    List(new MyData(1,2), new MyData(3,4)).map(_.field2) should contain (4)
  }
}

そして、List(new MyData(1,2), new MyData(3,9)).map(_.field2) should contain (4)エラーをスローしますList(2, 9) did not contain element 4

2番目のアプローチは

List(new MyData(1, 2), new MyData(3, 9)).count(_.field2 == 4) > 0 shouldBe true
// or
List(new MyData(1, 2), new MyData(3, 4)).count(_.field2 == 4) should be > 0

しかし、これについて私が気に入らないのは、その真偽です。例えば。List(new MyData(1, 2), new MyData(3, 11)).count(_.field2 == 4) shouldBe trueエラーをスローしますfalse was not equal to true

最初のアプローチは、入力データと期待されるものを提供するため、それ以上のことを教えてくれます。少なくとも、テストをリファクタリングする際には、最初のアプローチが役立つと思います。

3番目のアプローチは

List(new MyData(1, 9), new MyData(3, 4)).filter(_.field2 == 4) should not be empty

しかし、私の願いはまた、のようなものを持っていたscalatestList(new MyData(1,2), new MyData(3,4)) should contain (MyData(_, 4))

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ