サーチ…
構文
- mock.Setup(expression).Returns(value)//式内のメソッドを呼び出すたびにvalueを返す
パラメーター
パラメータ | 詳細 |
---|---|
表現 | メソッドの呼び出しを指定するラムダ式。 |
引数なしのメソッド・マッキング
interface Mockable {
bool DoSomething();
}
var mock = new Mock<Mockable>();
mock.Setup(x => x.DoSomething()).Returns(true);
var result = mock.Object.DoSomething(); //true
彼らが何を返すかを確認する方法を嘲笑する
var logRepository = new Mock<ILogRepository>();
logRepository.Setup(x => x.Write(It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
.Verifiable();
この場合、Verifiableを使用して確実に実行されます。
ここでコールバックを使用することもできます:
logRepository.Setup(x => x.Write(It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
.Callback<Exception, string, string, string, string, string>((ex, caller, user, machine, source, message) => { Console.WriteLine(message); });
メソッドの出力がコンソールの標準出力に記録されます(多くのテストフレームワークでは、その出力をランナーに取り込ませることができます)
保護されたメンバーをモッキングする
保護されたメンバーを模擬するには、まずテストフィクスチャの上部に次のものを含める必要があります。
using Moq.Protected;
次に、モックでProtected()
を呼び出します。その後、汎用のSetup<>
をメソッドの戻り値の型とともに使用できます。
var mock = new Mock<MyClass>();
mock.Protected()
.Setup<int>("MyProtectedGetIntMethod")
.Returns(1);
メソッドがvoidを返す場合は、汎用ではないSetup()
使用しSetup()
。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow