1
我要验证一个目标方法中的一个方法被调用以参数的顺序,像下面。例如,如何验证RepairCar()
被称为与car
参数第一,而不是car2
。验证方法调用参数,来电订购
[TestClass]
public class TestMethodParam
{
[TestMethod]
public void TestMethod1()
{
Mock<ICarService> carService = new Mock<ICarService>(MockBehavior.Strict);
var car = new Car
{
Name = "1"
};
var car2 = new Car
{
Name = "2"
};
var carManager = new CarManager(carService.Object);
//act
carManager.Serve();
//assert:
carService.Verify(c => c.RepairCar(It.Is<Car>(actualCar => actualCar.Name == car.Name)), Times.Once());
carService.Verify(c => c.RepairCar(It.Is<Car>(actualCar => actualCar.Name == car2.Name)), Times.Once());
}
}
public interface ICarService
{
void RepairCar(Car car);
}
public class Car
{
public string Name { get; set; }
}
public class CarManager
{
private ICarService carService;
public CarManager(ICarService carService)
{
this.carService = carService;
}
public void Serve()
{
var car = new Car
{
Name = "1"
};
carService.RepairCar(car);
var car2 = new Car
{
Name = "2"
};
carService.RepairCar(car2);
}
}