如何设置/模拟属性(C#、UnitTest)

问题描述 投票:0回答:1

我得到了这个:

private List<NameValuePair<CarTemplateType>> m_tempCars
 
public IList<NameValuePair<CarTemplateType>> CarTypes
{
     get
     {
         if (m_tempCars == null)
         {
             //somelogic
         }

         return m_tempCars;
     }
}

CarsVM
Init
,其中
m_tempCars
正在设置:

m_tempCars= CarTypes.FirstOrDefault(x => x.Value == my_data.CarTypes);

现在我有

TestMethod
:

[TestMethod]
Public void SomeTest()
{
CarsVM cars = new CarsVM ();

cars.CarTypes = ??? //

...
}

如何以某种方式模拟/设置它?

c# unit-testing mocking moq fluent-assertions
1个回答
0
投票

如果您使用起订量:

Mock<Car> carMock = new();
car.Setup(x => x.CarTypes()).Returns(new List<CarTypes>());

你不能在 C# 中模拟列表,你已经创建了一个实际的列表,但你可以将所有模拟的对象插入到列表中,前提是你引用了模拟对象:

List<Car> carList = new List<Car>();
carList.Add(car.Object);

通常,您可以通过遵循 SOLID 原则使您的代码更具可测试性。他们将确保您的代码模块保持较小,并且易于测试和扩展。

© www.soinside.com 2019 - 2024. All rights reserved.