반응형
Moq를 사용하여 메소드 호출 확인
저는 C #에서 단위 테스트를 처음 접하고 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"메소드가 호출되고 있는지 확인하고 싶습니다. 뭔가 빠졌습니까?
미리 감사드립니다!
잘못된 방법을 확인 중입니다. Moq를 사용하는 경우 메소드 클래스에서 메소드를 선택해야합니다.
다음과 같은 작업을 수행해야합니다.
class MyClassTest
{
[TestMethod]
public void MyMethodTest()
{
string action = "test";
Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
mockSomeClass.Setup(mock => mock.DoSomething());
MyClass myClass = new MyClass(mockSomeClass.Object);
myClass.MyMethod(action);
// Explicitly verify each expectation...
mockSomeClass.Verify(mock => mock.DoSomething(), Times.Once());
// ...or verify everything.
// mockSomeClass.VerifyAll();
}
}
다시 말해, 당신은 MyClass#MyMethod
호출을 확인하고 있으며 , SomeClass#DoSomething
그 과정에서 클래스가 확실히 한 번 호출 합니다. Times
인수는 필요하지 않습니다 . 나는 단지 그 가치를 보여주고 있었다.
참고 URL : https://stackoverflow.com/questions/9136674/verify-a-method-call-using-moq
반응형
'IT' 카테고리의 다른 글
LINQ ToDictionary와 ToLookup의 차이점은 무엇입니까 (0) | 2020.07.26 |
---|---|
싱글 톤의 대안 (0) | 2020.07.26 |
Gemfile에서 rubygem을 때 ~>와> =의 차이점은 무엇입니까? (0) | 2020.07.26 |
Bitbucket에서 중첩 목록 항목을 표시하는 방법은 무엇입니까? (0) | 2020.07.26 |
~ / .ssh / config 파일에서 SSH 포트 전달? (0) | 2020.07.26 |