C# 使用MOQ的单元测试:测试在特定条件下是否调用了方法

C# 使用MOQ的单元测试:测试在特定条件下是否调用了方法,c#,unit-testing,moq,xunit,C#,Unit Testing,Moq,Xunit,我有一个方法,它在内部调用methodB,但基于某些条件 methodA(Req req) { if(req.Quantity > 10) { _someIinterface.methodB(req); } } 我有多种情况,其中 数量=1->methodB()将不执行 数量=5->methodB()将不执行 数量=11->methodB()将被执行 数量=4->methodB()将不执行 所以我有一个测试用例,比如 [Theory] [JsonFileData("TestData.js

我有一个方法,它在内部调用methodB,但基于某些条件

methodA(Req req)
{
if(req.Quantity > 10)
{
_someIinterface.methodB(req);
}
}
我有多种情况,其中

数量=1->methodB()将不执行

数量=5->methodB()将不执行

数量=11->methodB()将被执行

数量=4->methodB()将不执行

所以我有一个测试用例,比如

[Theory]
[JsonFileData("TestData.json", "ScenarioRequest")]
public void TestMethodB()
{
Mock<SomeInterface> moq= new Mock<SomeInterface>();
moq.Setup(x=>x.methodB(It.IsAny<Req>())).Verifiable();
sut.methodA(req);
moq.Verify(x=>x.methodB(It.IsAny<Req>()),Times.Once());

}
[理论]
[JsonFileData(“TestData.json”,“ScenarioRequest”)]
公共void TestMethodB()
{
模拟最小起重量=新模拟();
moq.Setup(x=>x.methodB(It.IsAny()).Verifiable();
sut.methodA(要求);
moq.Verify(x=>x.methodB(It.IsAny()),Times.Once());
}
JsonFileData的源来自

因此,在本例中,testcase1和testcase2失败,但testcase3,4通过,即使testcase4有数量4。
有人知道如何测试这些案例吗?

请发布完整的方法。在方法A中,您有一个条件,
如果(req.Quantity>10)
则执行
\u interface.methodB(req)
但是你说的是
quantity=11->methodB()不会被执行
我刚刚更新了这个问题。感谢您的更正。您总是在检查MethodB是否已执行,甚至是
req.Quantity
小于10时