[英]How to test method which returns another method using EasyMock?
我正在使用 EasyMock 編寫測試用例。 我的測試方法調用“返回 verify.getVerification(paramter 1, paramter 2, parameter 3)”。 當我從測試類調用我的測試方法時,它返回 null。
在下面分享我的代碼片段:
//EntityField.java
private Class <? extends Entity> classtype;
private String paths;
Permission filter;
@Inject
private transient RestrictInterface restriction;
public EntityField(final Class <? extends Entity> classtype, final String
path, final Permission filterclass)
{
this.classtype = classtype;
this.paths = path;
filter = filterclass;
}
public Permission getBasePermission() //my test method
{
if(Active.class.isAssignableFrom(classtype))
{
filterclass=new
SimplePermission(Active.active_attribute,Operator.equals,Boolean.TRUE);
}
else if (NotActive.class.isAssignableFrom(classtype))
{
filterclass=new
SimplePermission("notactive",Operator.equals,Boolean.TRUE);
}
return restriction.getBasePermission(classtype,filterclass);
}
//Test.java
@Test
public void testgetBaseRestriction() {
//NiceMock
EntityField entityfieldobject = new EntityField (classtype, path,
filterclass);
//Mock Objects
RestrictInterface restriction = createNiceMock(RestrictInterface.class);
Permission filter = new
SimplePermission(Active.active_attribute,Operator.equals,Boolean.TRUE);
final Class = Active.class;
//expects
expect(restriction.getBaseRestriction(eq(classtype),eq(filterclass)))
.andStubReturn(filter);
//replay
replay(restriction);
Permission object = entityfieldobject.getBasePermission();
// here object returns null
verify(restriction);
}
我想測試我的測試類中是否設置了 filterclass 值。 如何在測試用例中避免這個空值。 任何幫助,將不勝感激。
謝謝
更新的答案,現在我有完整的代碼: restriction
似乎沒有注入entityfieldobject
,所以 null 是正常的。 EasyMock 不知道@Inject
。 請自己注入依賴項。 我建議為此使用構造函數注入。
下面的代碼給出了一個很好的例子。
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.mock;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.assertNotNull;
public class TestClass {
@Test
public void testgetBaseRestriction() {
Verification verification = mock(Verification.class);
expect(verification.getVerification("1", "2", "3")).andReturn(new Permission());
replay(verification);
EntityField entityfieldobject = new EntityField(verification);
assertNotNull(entityfieldobject.getVerification());
}
}
class Permission {}
interface Verification {
Permission getVerification(String s1, String s2, String s3);
}
class EntityField {
private final Verification verification;
public EntityField(Verification verification) {
this.verification = verification;
}
public Permission getVerification() {
return verification.getVerification("1", "2", "3");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.