C# 验证是否在模拟类中调用了方法
如果我们有这样的东西:C# 验证是否在模拟类中调用了方法,c#,unit-testing,mocking,rhino-mocks,C#,Unit Testing,Mocking,Rhino Mocks,如果我们有这样的东西: public class test { public void Condition() { if (x == y) { methodOne(); } else { methodTwo(); } } } 如何使用Rhino Moc
public class test
{
public void Condition()
{
if (x == y)
{
methodOne();
}
else
{
methodTwo();
}
}
}
如何使用Rhino Mock编写单元测试来断言是否调用了
methodOne
。您通常不会为正在测试的类创建Mock。您可以为其依赖项创建模拟
因此,如果您的代码实际上是:
public class Test
{
private readonly IFoo foo;
public Test(IFoo foo)
{
this.foo = foo;
}
public void Condition()
{
if (x == y)
{
foo.MethodOne();
}
else
{
foo.MethodTwo();
}
}
}
。。。然后为IFoo
创建一个mock,并将其传递给您测试的Test
实例,这样做是有意义的
虽然部分模拟可以让您测试是否调用了同一类中的方法,但我通常不会这样做。测试您是否可以看到调用
MethodOne
或MethodTwo
的效果,您通常不会为正在测试的类创建模拟。您可以为其依赖项创建模拟
因此,如果您的代码实际上是:
public class Test
{
private readonly IFoo foo;
public Test(IFoo foo)
{
this.foo = foo;
}
public void Condition()
{
if (x == y)
{
foo.MethodOne();
}
else
{
foo.MethodTwo();
}
}
}
。。。然后为IFoo
创建一个mock,并将其传递给您测试的Test
实例,这样做是有意义的
虽然部分模拟可以让您测试是否调用了同一类中的方法,但我通常不会这样做。测试是否可以看到调用
MethodOne
或MethodTwo
的效果您可以将MethodOne用作虚拟方法:
public virtual void MethodOne()
{
}
并使用部分模拟:
MockRepository mock = new MockRepository();
var mockTest = mock.PartialMock<Test>();
mockTest.Expect(m => m.MethodOne());
mock.ReplayAll();
mock.VerifyAll();
MockRepository mock=newmockrepository();
var mockTest=mock.PartialMock();
Expect(m=>m.MethodOne());
mock.ReplayAll();
mock.VerifyAll();
您可以利用MethodOne作为虚拟方法:
public virtual void MethodOne()
{
}
并使用部分模拟:
MockRepository mock = new MockRepository();
var mockTest = mock.PartialMock<Test>();
mockTest.Expect(m => m.MethodOne());
mock.ReplayAll();
mock.VerifyAll();
MockRepository mock=newmockrepository();
var mockTest=mock.PartialMock();
Expect(m=>m.MethodOne());
mock.ReplayAll();
mock.VerifyAll();
假设是定义类内测试是定义类内测试