[解決済み] 複数のMoq It.Is<string>()マッチング引数
2023-04-20 02:39:39
質問
Moq では、複数の Matching Argument を持つことは有効ですか。
It.Is<string>()
この例では、mockMembershipServiceが、与えられたUserに応じて異なるProviderUserKeyを返すようにしたいのです。
mockMembershipService.Setup(
x => x.GetUser(
It.Is<string>(
s => s.Contains("Joe")))
.ProviderUserKey)
.Returns("1234abcd");
mockMembershipService.Setup(
x => x.GetUser(
It.Is<string>(
s => s.Contains("Tracy")))
.ProviderUserKey)
.Returns("5678efgh");
SetUpは、それぞれの長所を評価するのではなく、2番目のステートメントをデフォルトとします。
どのように解決するのですか?
混乱しませんか?GetUserメソッドをモックしようとしているのに、その関数の戻り値のプロパティにReturnsを設定しているのです。また、モックされたメソッドに基づいて戻り値の型のプロパティを記述したいのです。
もっとわかりやすい方法を紹介します。
mockMembershipService.Setup(x => x.GetUser(It.IsAny<string>())
.Returns<string>(GetMembershipUser);
メンバーシップモックを作成するメソッドを紹介します。
private MembershipUser GetMembershipUser(string s)
{
Mock<MembershipUser> user =new Mock<MembershipUser>();
user.Setup(item => item.ProviderUserKey).Returns(GetProperty(s));
return user.Object;
}
そして、そのプロパティを設定するためのメソッドを書きます。
private string GetProperty(string s)
{
if(s.Contains("Joe"))
return "1234abcd";
else if(s.Contains("Tracy"))
return "5678efgh";
}
関連
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] 複数の例外を一度にキャッチする?
-
[解決済み] 文字列からストリームを生成するにはどうすればよいですか?
-
[解決済み] Mockitoは複数回呼び出されたメソッドの引数をキャプチャできますか?
-
[解決済み] Moqでメソッドが呼び出されていないことを確認する方法は?
-
[解決済み] Moqにタスクを返すように指示するにはどうしたらいいですか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】Moqで1回目と2回目の戻り値が違う件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み] インデックス付きプロパティのMOQの付け方