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

Posted

技术标签:

【中文标题】对于 Shiro 测试中的类型,方法 expect(boolean) 未定义【英文标题】:The method expect(boolean) is undefined for the type in Shiro test 【发布时间】:2021-12-20 06:47:29 【问题描述】:

我正在使用 Java 进行第一次测试,并且我有一个 Shiro 安全...我按照教程 (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);

但是当我这样做时会出现这个错误

AdminControllerTest 类型的方法 expect(boolean) 未定义

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

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

How to mock a shirosession?

【问题讨论】:

请向我们展示您对expect 的导入。你有吗? 谢谢@Lesiak,但这是问题所在......我没有任何导入,Eclipse 不建议我可以在哪里导入:-( 如果您有createNiceMock 的静态导入,为什么不尝试为expect 添加一个。它们来自同一个班级EasyMock,您似乎不太可能可以导入一个但不能导入另一个 再次感谢...对不起...我不使用 EasyMock 但 Mockito(我编辑问题),如果我尝试导入说:导入 org.mockito。 Mockito.expect 无法解决 见***.com/questions/14392148/… 【参考方案1】:

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

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

我们可以看到...

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

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

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

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

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

【讨论】:

以上是关于对于 Shiro 测试中的类型,方法 expect(boolean) 未定义的主要内容,如果未能解决你的问题,请参考以下文章

Jest 使用指南 - - ts 文件篇

Jest 使用指南 - - ts 文件篇

Jest 使用指南 - - ts 文件篇

通过动态类加载解决通过Tomcat全局存储进行回显在Shiro中的Header过长问题

gtest变化量

Shell编程之expect免交互