1

我正在尝试设置一个将运行的方法:

dataAccess.Setup(x => x.GetCars(It.IsAny<CarFilter>()));

好的,所以我是说在GetCars传递任何类型的对象时设置方法CarFilter

我想让这个更具体一点。

我想做它,以便CarFilter在属性 on 传递任何类型的对象时进行设置CarFilter Color = "Red"

有人知道怎么写吗?

4

2 回答 2

1

您可以使用 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

}
于 2012-08-31T10:30:10.703 回答
1

最终需要:

dataAccess.Setup(x => x.GetCars(It.Is<CarFilter>(z => z.Color == "Red")));
于 2012-09-02T22:24:08.187 回答