これは通常、部分的なモックで行われますが、少し厄介な場合があります。
まず、モックするメソッドは仮想でなければなりません。そうしないと、Rhino Mocks はメソッドをインターセプトできません。それでは、コードを次のように変更しましょう。
public Image Get(BrowserName browser)
{
// if no screenshot mode specified it means that regular screenshot needed
return this.Get(browser, ScreenshotMode.Regular);
}
public virtual Image Get(BrowserName browser, ScreenshotMode mode) {
// some code omitted here
}
2 番目の方法は現在仮想であることに注意してください。次に、部分モックを次のようにセットアップできます。
//Arrange
var yourClass = MockRepository.GeneratePartialMock<YourClass>();
var bn = new BrowserName();
yourClass.Expect(m => m.Get(bn, ScreenshotMode.Regular));
//Act
yourClass.Get(bn);
//Assert
yourClass.VerifyAllExpectations();
これは、AAA Rhino Mocks 構文を使用したものです。録音/再生を使用したい場合は、それも使用できます。
それがあなたがそれをする方法です。おそらくより良い解決策は、ScreenshotMode
が列挙型であり、C# 4 を自由に使用できる場合です。それをオプションのパラメーターにするだけです。
public Image Get(BrowserName browser, ScreenshotMode mode = ScreenshotMode.Regular)
{
//Omitted code.
}
2 つのメソッドがなくなったので、1 つのメソッドが別のメソッドを呼び出していることをテストする必要はありません。