如何嘲笑shirosession?

时间:2012-07-11 17:27:27

标签: java unit-testing junit easymock shiro

在我的项目中,shiro会话用于验证用户。我要为服务调用编写模拟测试。即
    的 object.setCreatedBy(SecurityUtils.getSubject()。getPrincipal()。的toString())
在CreatedBy字段中设置登录用户(例如 sandy )。现在我想从testCase填充此值(使用Junit 4.0和easy 3.0)。我正在使用以下代码

public class ExampleShiroUnitTest extends AbstractShiroTest {

@Test
public void testSimple() {
    //1.  Create a mock authenticated Subject instance for the test to run:
    Subject subjectUnderTest = createNiceMock(Subject.class);
    expect(subjectUnderTest.isAuthenticated()).andReturn(true);

    //2. Bind the subject to the current thread:
    setSubject(subjectUnderTest);
}

@After
public void tearDownSubject() {
    //3. Unbind the subject from the current thread:
    clearSubject();
}

}

http://shiro.apache.org/testing.html给出。 在上面的方法中,主题被正确设置并在获得时给出适当的值,但是不知道如何从中获得主要。当我从subject访问它时它返回null并且没有setPrincipal()的方法。

1 个答案:

答案 0 :(得分:2)

我可能误解了你的问题,但这样的问题不能解决这个问题吗?

expect(subjectUnderTest.getPrincipal()).andReturn("sandy");