Shiro 测试中的类型未定义方法 expect(boolean)

The method expect(boolean) is undefined for the type in Shiro test

我正在 Java 进行我的第一次测试,我有一个 Shiro Security...我按照教程 (https://shiro.apache.org/testing.html) 但是说:

(此示例使用 EasyMock,但 Mockito 也同样有效):

Subject subjectUnderTest = createNiceMock(Subject.class);
expect(subjectUnderTest.isAuthenticated()).andReturn(true);

因为我使用 Mockito 我用

实现
Subject mockSubject = mock(Subject.class);
expect(subjectUnderTest.isAuthenticated()).andReturn(true);

但是当我这样做的时候出现了这个错误

The method expect(boolean) is undefined for the type AdminControllerTest

并且不要给我导入它的可能性。我不知道 expect 是否特定于 EasyMock,如果是,我必须在 Mockito 中使用什么。

我在这里搜索并看到更多人这样做,并且总是推荐使用这个 expect

How to mock a shirosession?

如果我们看一下这个代码示例...

Subject mockSubject = mock(Subject.class);
expect(subjectUnderTest.isAuthenticated()).andReturn(true);

我们可以看到...

  1. 您正在使用 mockito 语法进行模拟。
  2. 您正在使用 easyMock 语法来配置模拟。它甚至不在依赖列表中,因此找不到此方法。

解决方案是使用 mockito 语法来配置 mock。

Subject mockSubject = mock(Subject.class);
when(mockSubject.isAuthenticated()).thenReturn(true);

这将使一切按预期工作,当调用 isAuthenticated() 方法时,您的 Subject 将 return true

如果你想升级你的 mockito 游戏,试试这个 resource,它带有工作 github 代码示例。