Moq を使用して C# で単体テストを行う方法を学ぼうとしています。関数を持つ単純なクラス、BasicMath をセットアップしますint Multiply(int a, int b)
。本体は単に a * b を返します。関数 'int Square(int a)' を持つ AdvancedMath という別のクラスがあり、本体は Multiply(a,a) を呼び出して結果を返します。
BasicMath.Multiply が正しい値で呼び出されることをアサートする AdvancedMath.Square の簡単なテストを作成しようとしています。普通のパブリック関数ではできないのは承知しておりますので、関数を仮想化しましたが、いまだに困っています。誰かがこれがどのように行われるかを説明できますか? どちらのクラスにも、デフォルトの空のコンストラクター以外のコンストラクターはありません。
これが私の試みです:
class test_Advanced_Functions
{
[Test]
public void test_SquareFunction_Should_return_correct_result()
{
// Arrange
Mock<BasicFunctions> mock = new Mock<BasicFunctions>();
AdvancedFunctions af = new AdvancedFunctions();
// Act
int result = af.Square(5);
//Assert
mock.Verify(d => d.Multiply(5, 5), Times.Exactly(1));
}