Grails 単体テスト:なぜこのステートメントは失敗するのでしょうか?

StackOverflow https://stackoverflow.com/questions/2542470

  •  23-09-2019
  •  | 
  •  

質問

私は過去に Java で開発したことがありますが、現在は Grails/Groovy を学ぼうとしています。 この少し古いチュートリアル.

import grails.test.*

class DateTagLibTests extends TagLibUnitTestCase {

    def dateTagLib

    protected void setUp() {
        super.setUp()
        dateTagLib = new DateTagLib()
    }

    protected void tearDown() {
        super.tearDown()
    }

    void testThisYear() {
        String expected = Calendar.getInstance().get(Calendar.YEAR) 

        // NOTE: This statement fails
        assertEquals("the years dont match and I dont know why.", expected, dateTagLib.thisYear())

    }
}

DateTagLibTests.groovy
(注記: この TagLibUnitTestCase は Grails 1.2.1 用であり、 チュートリアル)

何らかの理由で、上記のテストは次のように失敗します。

予想:<2010> でしたが:<2010>

上記のテストを次の代替バージョンのテストに置き換えてみましたが、テストは問題なく成功しました。

void testThisYear() {
    String expected = Calendar.getInstance().get(Calendar.YEAR)
    String actual = dateTagLib.thisYear()

    // NOTE: The following two assertions work:
    assertEquals("the years don\'t match", expected, actual)
    assertTrue("the years don\'t match", expected.equals(actual))
}

これら 2 つのバージョンのテストは基本的に同じものですよね?

Grails 1.2.1 または Groovy に私が理解できない新しい点がある場合を除きます。値は両方とも によって返される値であるため、同じ型である必要があります。 Calendar.getInstance().get(Calendar.YEAR)

役に立ちましたか?

解決

dateTagLib.thisYear(から返されたオブジェクト)は、文字列であってはならない。

試してみてください
  assertEquals("the years dont match and I dont know why.", expected, dateTagLib.thisYear().toString())

あなたの作業例では、Groovyのは、あなたのためのStringに.thisYearを()に変換されます。

dateTagLib.thisYearをプリントアウト()。クラスを確認する。

歓声

リー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top