【问题标题】:Easymock and ShiroEasymock 和 Shiro
【发布时间】:2013-09-08 20:21:50
【问题描述】:

我正在尝试使用 AbstractShiroTest 抽象类进行单元测试,如 http://shiro.apache.org/testing.html 中所述 我有我的测试课:

public class BeanTest extends AbstractShiroTest {
...
@Test
public void testShiro() {
    Subject subjectUnderTest = createNiceMock(Subject.class);
    expect(subjectUnderTest.isAuthenticated()).andReturn(true);
    expect(subjectUnderTest.getPrincipal()).andReturn("cenap");
    setSubject(subjectUnderTest);
    assertTrue("Subject is not authenticated", SecurityUtils.getSubject().isAuthenticated());
    assertNotNull("Subject principle null", SecurityUtils.getSubject().getPrincipal());
}

@AfterClass
public static void tearDownClass() {  
    tearDownShiro();
} 

两个断言都失败... SecurityUtils.getSubject() 返回某个对象,但该对象的 isAuthenticated() 方法返回 false 并且 getPrincipal() 方法返回 null。 “期望”子句似乎不起作用。我错过了什么?

【问题讨论】:

    标签: easymock shiro


    【解决方案1】:

    回答我自己的问题,因为它可能对某人有所帮助。这是一个愚蠢的错误... 诀窍是:不要忘记添加

    anyTimes();

    在你的期望声明之后,所以不要忘记调用

    重播(subjectUnderTest);

    在那之后!

    所以你的 BeforeClass 方法应该是这样的:

    @BeforeClass
    public static void setUpShiro() {
        Subject subjectUnderTest = createNiceMock(Subject.class);
        expect(subjectUnderTest.isAuthenticated()).andReturn(true).anyTimes();
        expect(subjectUnderTest.getPrincipal()).andReturn(Admin).anyTimes();
        setSubject(subjectUnderTest);        
        replay (subjectUnderTest);        
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2012-11-01
      • 2011-09-01
      相关资源
      最近更新 更多