在我的项目中,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()的方法。
答案 0 :(得分:2)
我可能误解了你的问题,但这样的问题不能解决这个问题吗?
expect(subjectUnderTest.getPrincipal()).andReturn("sandy");