Gui*_*lle 4 c# moq xunit.net .net-core
使用xUnit和Moq检查是否根据另一个方法的返回值执行一个方法。例:
public class A
{
public bool M1() { // return true or false ... }
public void M2() { // Do something ..... }
}
public class B
{
private A objectA;
public B(A a)
{
objectA = a;
}
public void Mb ()
{
for(int i = 0; i <= 5; i++)
{
if (objectA.M1())
{
return;
}
objectA.M2();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想验证这样的事情:
[Fact]
public void Test()
{
// Arrange
Mock<A> mockA = new Mock<A>();
mockA.Setup(x => x.M1()).Return(true);
mockA.Setup(x => x.M2());
// Act
B b = new B(mockA.object);
b.Mb();
// Assert
mockA.Verify(m => m.M2(), """all exactly time that M1 returned false"""); // if this were possible it would be perfect
}
Run Code Online (Sandbox Code Playgroud)
是否可以用xUnit和Moq做类似的事情?
您应该能够执行以下操作:
[Fact]
public void Test()
{
// Arrange
Mock<A> mockA = new Mock<A>();
int count = 0;
mockA.Setup(x => x.M1()).Returns(true).Callback(() => { count++; });
mockA.Setup(x => x.M2());
// Act
B b = new B(mockA.Object);
b.Mb();
// Assert
mockA.Verify(m => m.M2(), Times.Exactly(count), "all exactly time that M1 returned false");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2356 次 |
| 最近记录: |