public interface Interface1
{
void DoSomething1(int a);
}
public interface Interface2
{
void DoSomething2(int a);
}
public class Class1: Interface1
{
private Interface2 _interface2;
public Class1(Interface2 _interface2)
{
this._inteface2= _interface2;
}
public void DoSomething1(int a)
{
_interface2.DoSomething2(a);
}
}
public class Class2: Interface2
{
public void DoSomething2(int a)
{
// some action
}
}
这是简化的代码。 我想知道如何测试Class1是否使用Moq从Class2调用DoSomething2(int a),在C#中的特定TestCases上?
答案 0 :(得分:0)
当您向Interface2
构造函数注入Class1
时,您需要使用Moq来模拟它。然后,您需要执行DoSomething1并调用Verify
方法以确保调用Interface2
的方法一次。如果不是 - 测试将失败。示例如下:
[TestFixture]
public class Class1Tests
{
[Test]
public void DoSomething1_DoSomething2IsCalled()
{
//Setup
//create a mock for Class1 dependency
var mock = new Mock<Interface2>();
var sut = new Class1(mock.Object);
//execute
sut.DoSomething1(It.IsAny<int>());
//test
mock.Verify(m => m.DoSomething2(It.IsAny<int>()), Times.Once());
}
}
答案 1 :(得分:0)
如果您要测试Class1,您应该模拟它的依赖项,在这种情况下,Interface2就像这样
Activity.From.Id