C#の単体テストやMoqの使用方法を学ぶのはかなり新しいです。以下は私がテストしようとしているクラスです。以下はMoqを使用してメソッド呼び出しを確認する
class MyClass
{
SomeClass someClass;
public MyClass(SomeClass someClass)
{
this.someClass = someClass;
}
public void MyMethod(string method)
{
method = "test"
someClass.DoSomething(method);
}
}
class Someclass
{
public DoSomething(string method)
{
// do something...
}
}
私のTestClassをされています。私は次の例外を取得
class MyClassTest
{
[TestMethod()]
public void MyMethodTest()
{
string action="test";
Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
mockSomeClass.SetUp(a => a.DoSomething(action));
MyClass myClass = new MyClass(mockSomeClass.Object);
myClass.MyMethod(action);
mockSomeClass.Verify(v => v.DoSomething(It.IsAny<string>()));
}
}
:
Expected invocation on the mock at least once, but was never performed
No setups configured.
No invocations performed..
は、私はちょうど方法 "MyMethodはは" と呼ばれるかされているかどうかを確認します。何か不足していますか?
ありがとうございます!
'SomeClass'に' MyMethod(string) 'の定義がないとコンパイルされません。 –
申し訳ありません。私の質問を編集しました。 – user591410
あなたは正しい道ですが、投稿されたコードにバグがあります。それはコンパイルされません - Someclassのケーシング、DoSomethingの無効な戻り値。その後、パブリックアクセスが必要となり、次にDoSomethingを仮想化します。つまり、プロダクションコードにもバグがあります。 – TrueWill