0

コントローラークラスでスプリング構成と Autowired を使用して解決される、複数の依存関係を持つコントローラーがあります。

例えば:

@Controller
public class MyController{
    @Autowired
    private Type1 myDependency1;

    @Autowired
    private Type2 myDependency2;

}

「mydependency1」がモックされ、他のすべてが自動配線されるように、このコントローラーをテストしたいと思います。

これどうやってするの?

以前は次のテストに従っていました:

@Mock
private Type1 myDependency1;

@InjectMocks
private Mycontroller controller = new MyController();

private MockMvc mockMvc;
@Before
public void setUp(){
    mockMvc = standaloneSetup(controller).build();
}

しかし、これは myDependency1 のモックでコントローラーを返すだけで、myDependency2 を注入していません。

4

1 に答える 1

1

さまざまなモック ツールで遊んだ後、モック部分をあきらめてプロファイルに戻りました。スプリングの機能。

application-context.xml に mockXYZ という新しいプロファイルを作成しました

そして、私がモックしたい、または特定の応答をしたいサービスを作成しました

@Service("type1")
@Profile("mockXYZ")
public class Type1Mock implements Type1{
    ....
}

そして、テストするときは、mockXYZ をアクティブなプロファイルとして作成し、autowired コントローラーを使用しました。

このように、実装が 1 つしかなく、任意のプロファイルに対して選択されるため、他の依存関係が正常に機能している間に、1 つの依存関係のみをモックすることができました。

これが他の人にも役立つことを願っています。

ありがとうございました

于 2013-06-20T16:19:56.420 に答える