我想模拟(使用Moq)类设置一个只显示两个属性的类的返回对象。设置一个只显示属性的Mocked(Moq)类
在我有限的Moq经验中,我通常会使用Setup()lamda来定义方法调用,然后使用Returns()来回吐所需的输出。
我在这里倒下的是Setup()。没有一个“方法”可以调用,因为构造函数完成这项工作,填充这两个属性然后返回。
我的班,我想嘲笑......明明空置下来:
public class CarResponse
{
public IMetaModel meta { get; set; }
public List<ICarModel> cars { get; set; }
public CarResponse(Common.Models.Car car)
{
this.cars = new List<ICarModel>();
}
}
我在嘲笑愚蠢的尝试:
private Mock<CarResponse> _carResponse = new Mock<CarResponse>(MockBehavior.Strict);
_carResponse.Setup(?????).Returns(new CarResponse() { meta = new MetaModelV2(), cars = foo });
为了进一步澄清...这里是代码我正在尝试编写单元测试:
public HttpResponseMessage AddPickup()
{
//....code removed for brevity....
//this repository is mocked and returns the object exactly as I want it
var car = carRepository.GetCar(carId);
if (!errorInfo.Any()) //This check is bogus it never gets sets
{
RequestHelper rqh = new RequestHelper();
response = rqh.CreateResponse(Request, HttpStatusCode.OK, new CarResponse(car));
}
我的单元测试:
[TestMethod]
public void AddValidPickupCorrectResponse()
{
//arrange
//...lots of code here left off for setting up http context etc
//act---
var response = controller.AddPickup();
//assert
}
如果我使用precanned对象的建议我将如何“挂钩”,它与被测代码。例如,我写了一个单元测试,使用我的预先封装的对象而不是Moq,但是如何获得SUT使用的预先封装的对象?
'CarResponse'是'PoCo'类,你为什么会想嘲弄吗? –
@OldFox ...是的,它确实是一个PoCo ...我如何将它从单元测试“传递”给SUT? – GPGVM
SUT的外观如何?这个例子中的问题是什么?(使用'CreateResponse'的例子)请添加UT,你正试图验证的场景和被测试的类... –