0

こんにちは、テストしたいクラスがあります。このクラスには自動配線された DAO オブジェクトがあり、このオブジェクトは@PostConstructメソッドで使用されていますが、実際のオブジェクトではなくモックを使用したいのですが、方法はありません。次に例を示します。

@Autowired
PersonDao personDao;
//Constructor 
public Person()
{
    //Do stuff
}

@PostConstruct
void init()
{
    //I need it to be a mock
    personDao.add(new Person());
}
4

1 に答える 1

1

モックを使用するPersonDao場合は、いくつかの選択肢があります。

  • PersonDaoモックを属性付きのSpring Beanとして定義しprimary="true"て、通常のBeanよりも優先されるようにします

  • 自動配線をコンストラクターに移動Personし、モックを提供して手動で作成します。

    PersonDao personDao;
    
    @Autowired
    public Person(PersonDao personDao)
    {
        this.personDao = personDao;
    }
    

    それから:

    new Person(personDaoMock)
    

    Spring に依存しないでください。

  • 次を使用してプライベートフィールドを変更できますReflectionTestUtils

    ReflectionTestUtils.setField(person, "personDao", mock);
    
于 2012-10-02T12:21:08.887 に答える