ここでファクトリをエスケープしたり、オブジェクトを引数として渡したりできるかどうかはわかりません。余分な苦痛の世界のように感じるかもしれませんが、オブジェクトをモックすることを期待している場合、特定のスタイルでコーディングする必要があることがよくあります。
私はファクトリの方向に傾きます (もちろん、インターフェイスとして定義されています)。ファクトリをモックし、呼び出し時にモックされたオブジェクトを返すようにしますgetMyObject()
。
public void myMethod(int p1, int p2, MyObject mo) {
MyObject mo = factory.getMyObject(...args...);
int returnedId = mo.doOperation(something);
}
public interface SomeFactory {
MyObject getMyObject(...args...);
}
または、引数として a を受け入れるメソッドのオーバーロードされたバージョンを作成することもできますがMyObject
、それは少し醜いです:
// Test this one, mocking 'mo'
public void myMethod(int p1, int p2, MyObject mo) {
MyObject mo = new MyObject(var1,var2);
int returnedId = mo.doOperation(something);
}
public void myMethod(int p1, int p2) {
myMethod(p1, p2, new MyObject(...));
}