我正在尝试设置一个将运行的方法:
dataAccess.Setup(x => x.GetCars(It.IsAny<CarFilter>()));
好的,所以我是说在GetCars
传递任何类型的对象时设置方法CarFilter
。
我想让这个更具体一点。
我想做它,以便CarFilter
在属性 on 传递任何类型的对象时进行设置CarFilter
Color = "Red"
。
有人知道怎么写吗?
我正在尝试设置一个将运行的方法:
dataAccess.Setup(x => x.GetCars(It.IsAny<CarFilter>()));
好的,所以我是说在GetCars
传递任何类型的对象时设置方法CarFilter
。
我想让这个更具体一点。
我想做它,以便CarFilter
在属性 on 传递任何类型的对象时进行设置CarFilter
Color = "Red"
。
有人知道怎么写吗?
您可以使用 It.Is(...) 对匹配设置条件
public class Car {
public string Color { get; set; }
}
public interface IFoo {
void DoIt(Car car);
}
[TestMethod]
public void PassesWhenRed() {
var mockFoo = new Mock<IFoo>();
var redCar = new Car { Color = "Red" };
mockFoo.Object.DoIt(redCar);
mockFoo.Verify(mk=>mk.DoIt(It.Is<Car>(car => car.Color == "Red"))); // Passes
}
[TestMethod]
public void FailsWhenNotRed() {
var mockFoo = new Mock<IFoo>();
var blueCar = new Car { Color = "Blue" };
mockFoo.Object.DoIt(blueCar);
mockFoo.Verify(mk=>mk.DoIt(It.Is<Car>(car => car.Color == "Red"))); // Fails
}
最终需要:
dataAccess.Setup(x => x.GetCars(It.Is<CarFilter>(z => z.Color == "Red")));