我有以下课程:

public interface Emailer {}

@Named
public class RealEmailer implements Emailer {}

@Named
public class NoOpEmailer implements Emailer {}


我的服务类别使用了真正的电子邮件程序:

public class SomeService {
    @Inject
    private Emailer emailer;
}


问题是,在我的服务测试类(SomeServiceTest)中,如何在服务中注入Emailer以使用NoOpEmailer?我将Spring用于DI框架。

最佳答案

如果可以使用Spring 3.1,则可以使用Profiles。这将允许您提供同一bean的两种不同实现(Emailer和NoOpEmailer)。然后,在测试中,您可以使用@Profile(“ test”)批注来激活测试配置文件,并且不会注入任何op Bean。

09-29 21:52