私はYearMonth.class
をmockitoでモックしようとしています。Java 8でYearMonthを擬似する方法
私はgetYear
とgetMonth
のメソッドを呼び出すので、テスト中のメソッドでどの値が使用されているかを制御したいと思います。しかし、私は次の問題を抱いています。
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class java.time.YearMonth
Mockito cannot mock/spy following:
- final classes
- anonymous classes
- primitive types
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl$1.withBefores(JUnit45AndHigherRunnerImpl.java:27)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:246)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)
at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
テストは、私はテストが持っているよモック
YearMonth yearMonthMock = mock(YearMonth.class);
のための次の定義と方法を持っている私が仕事を続けるために、例外を解決するにはどうすればよい
YearMonth yearMonth = YearMonth.now(ZoneId.of("UTC"));
String year = Integer.toString(yearMonth.getYear());
String month = Integer.toString(yearMonth.getMonthValue());
を次YearMonth.class
または別のアプローチを使用する必要があります。
で
?なぜあなたはそれを嘲笑する必要がありますか? –
あなたは何を試そうとしていますか? 'yearMonth.getYear()'が特定の年を返すようにしたい場合、あなたはいつでもそれを直接嘲笑せずに使うことができます - 'YearMonth yearMonth = YearMonth.of(2016,11);' –