Как проверить метод, который возвращает другой метод, используя EasyMock? - PullRequest
0 голосов
/ 03 февраля 2020

Я пишу контрольный пример с использованием EasyMock. Мой тестовый метод вызывает «возвращает validation.getVerification (параметр 1, параметр 2, параметр 3)». Когда я вызываю мой тестовый метод из тестового класса, он возвращает ноль.

Поделиться моим фрагментом кода ниже:

//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 или нет в моем тестовом классе. Как избежать этого нулевого значения в тестовом примере. Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 04 февраля 2020

Обновленный ответ, теперь, когда у меня есть полный код: restriction, кажется, не вводится в entityfieldobject, поэтому ноль - это нормально. 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");
    }
}
...