首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Junit4和Jmock

Junit4和Jmock
EN

Stack Overflow用户
提问于 2015-04-06 09:19:02
回答 1查看 152关注 0票数 1

我已经检查了所有关于这方面的堆栈溢出问题。但我找不到合适的解决方案。

代码语言:javascript
复制
public class TestAuthenticate {
private RestService rs;
private String token_actual = token1;
private Mockery context;
private Authenticate authenticate_object;


@Before
public void setup(){
context = new JUnit4Mockery() {{
    setImposteriser(ClassImposteriser.INSTANCE);
}}; 

rs = new RestService();
}

@Test
public final void testAuthenticate() {

    authenticate_object = context.mock(Authenticate.class);

    context.checking(new Expectations() {
        {
            oneOf(authenticate_object).authenticate_method("username", "password");
            will(returnValue(token1));
        }
     });
    String token = rs.authenticate("username", "password");
    System.out.println(token);

    assertEquals(token_actual, token);
    context.assertIsSatisfied();
}

}

这是调用实际的身份验证方法,而不是模拟身份验证类。谁能告诉我我哪里做错了?

代码语言:javascript
复制
public class RestService {
public string authenticate(String user, String pass){
Authenticate auth = new Authenticate();
String res = auth.authenticate(user,pass);
}
return res;
}
EN

回答 1

Stack Overflow用户

发布于 2015-04-06 12:08:35

通常,您将使用某种形式的依赖项注入将模拟AuthenticationService注入到RestService中。试着重写你的RestService,比如

代码语言:javascript
复制
public class RestService {
    private final AuthenticateService auth;
    public RestService(AuthenticateService auth) {
       this.auth = auth;
    } 
    public string authenticate(String user, String pass){
        return auth.authenticate(user,pass);
    }
}

然后在你的测试中

代码语言:javascript
复制
 rs = new RestService(authenticate_object); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29464150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档