这是采取了几乎逐字从IBM的 掌握技术发展的看法 系列。

DateTagLib.时髦:

class DateTagLib {
  def thisYear = {
    out << Calendar.getInstance().get(Calendar.YEAR)
  }
}

DateTagLibTests.时髦:

class DateTagLibTests extends TagLibUnitTestCase {
    def dateTagLib

    protected void setUp() {
        super.setUp()

        dateTagLib = new DateTagLib()
    }

    void testThisYear() {
        String expected = Calendar.getInstance().get(Calendar.YEAR)
        assertEquals("years do NOT match", expected, dateTagLib.thisYear())
    }

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

grails test-app DateTagLib 输出:

-------------------------------------------------------
Running 1 unit test...
Running test DateTagLibTests...
                    testThisYear...FAILED
Tests Completed in 359ms ...
-------------------------------------------------------
Tests passed: 0
Tests failed: 1
-------------------------------------------------------

我试着匹配的类型(int/长/String),但我仍然敲打我的头撞在墙上。

这测试还有失败:

void testThisYear() {
    long expected = Calendar.getInstance().get(Calendar.YEAR)
    assertEquals("years do NOT match", expected, (long) dateTagLib.thisYear())
}
有帮助吗?

解决方案

试试下面的而不是

class DateTagLibTests extends TagLibUnitTestCase {

    void testThisYear() {
        String expected = Calendar.getInstance().get(Calendar.YEAR)
        tagLib.thisYear()
        assertEquals("years do NOT match", expected, tagLib.out)
    }

}

你的原始代码中有2个问题:

  • 你不应该的实例 DateTagLib 明确。它已经通过一个性测试类命名的 tagLib
  • thisYear 不返回的年度价值,它写到 out.在测试你可以访问的内容写入输出的通过 tagLib.out

其他提示

out << Calendar.getInstance().get(Calendar.YEAR)并将结果置于out,如果你要测试的这款使用def thisYear = { Calendar.getInstance().get(Calendar.YEAR) }

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top