ホームページ > バックエンド開発 > C++ > Moq を使用して拡張メソッドを効果的にモックするにはどうすればよいですか?

Moq を使用して拡張メソッドを効果的にモックするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-20 02:07:14
オリジナル
861 人が閲覧しました

How Can I Mock Extension Methods Effectively with Moq?

Moq を使用した拡張メソッドのモック化: 代替手段

拡張メソッドに依存するコードをテストする場合、これらのメソッドで将来発生する可能性のある障害に対してテストの安定性を維持することが重要です。 Moq の機能は静的メソッドのオーバーライドには直接拡張されませんが、回避策は存在します。

代替方法

拡張メソッドは本質的に静的メソッドであり、Moq で直接シミュレートすることはできません。代わりに、具象クラスとその静的メソッドを利用して、拡張メソッドの実装を分離できます。

次の例を考えてみましょう:

<code class="language-c#">public static class ExtensionClass
{
    public static int GetValue(this SomeType obj) => obj.Id;
}

public class SomeType
{
    public int Id { get; set; }
}</code>
ログイン後にコピー

テスト実装

拡張メソッドを呼び出さないモックを作成するには、静的クラスを直接参照します。

<code class="language-c#">var concreteClassMock = new Mock<ExtensionClass>();
concreteClassMock.Setup(c => c.GetValue(It.IsAny<SomeType>())).Returns(5);</code>
ログイン後にコピー

具象クラスの静的メソッドをターゲットにすることで、拡張メソッド自体に直接依存せずに、拡張メソッドの動作を効果的にシミュレートできます。これにより、テストの失敗はテスト対象のクラスのみから発生し、拡張メソッドの将来の失敗によっては発生しないことが保証されます。

以上がMoq を使用して拡張メソッドを効果的にモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート