大家好,我正在尝试为我的 Processor 类编写单元测试。在我的项目中,我会获取一个 JSON 文件并将其反序列化,然后构建和处理它,最后将其保存到我的数据库中。 这是我的 Process 类:
public class CustomerProcessors
{
private static IRepository _repository;
private static PracticeEntities4 _context;
private static Customer customer;
public CustomerProcessors()
{
}
public CustomerProcessors(IRepository repository)
{
_repository = repository;
}
public static void Process(Customer customer)
{
var oldcustomer = _repository.GetOldCustomerId(customer.Code.Value);
if (oldcustomer == null)
{
Save(customer);
}
else
update(customer);
}
private static void update(Customer customer)
{
_repository.UpdateCustomer(customer);
}
private static void Save(Customer customer)
{
_repository.SaveCustomer(customer);
}
}
这是我的构建器
public Customer CustomerBuild(DtoCustomer dto)
{
return new Customer()
{
FirstName = dto.FirstName,
LastName = dto.LastName,
Address = dto.Address,
Email = dto.Email,
Code = int.Parse(dto.Code),
PhoneNumber = dto.Phone
};
}
最后,这是我的单元测试。
[TestClass]
public class CustomerProcessorTest
{
private static string path;
private static CustomerDeserializer _customerDeserializer;
private static CustomerBuilder _customerBuilder;
private List<Customer> _customers;
private static Mock<IRepository> mock;
private Customer customer;
[ClassInitialize]
public static void CLassInitialize(TestContext context)
{
path = Path.Combine(Environment.CurrentDirectory, @"JSON\", "Customer.json");
}
[TestInitialize]
public void TestInitialize()
{
mock = new Mock<IRepository>();
_customerDeserializer = new CustomerDeserializer();
_customerBuilder = new CustomerBuilder();
_customers = new List<Customer>();
Customer customer = new Customer();
}
[TestMethod]
public void CusomerDeserialize_customerProcess()
{
//Arange
mock.Setup(e => e.GetOldCustomerId(1001)).Returns(3);
mock.Setup(e => e.GetOldStoreId(200)).Returns(3);
//Act
var dtos = CustomerDeserializer.Deserialize(path);
var dto = dtos.FirstOrDefault(e => e.Code == "1001");
var Builder= new CustomerBuilder();
var customer = Builder.CustomerBuild(dto);
//Error here
var process= CustomerProcessors.Process(customer);
//Asset
Assert.AreEqual(0, _customers.Count);
}
}
}
我遇到了这个错误,但不知道该怎么办?
CustomerProcessors.Process
声明为void
。它不返回任何内容,因此没有任何可以分配给本地变量的内容,也没有类型可供var
推断。 - madreflectionprocess
包含什么内容? - SweeperProcess
需要返回它而不是void
。如果Process
作为void
是正常的,不要试图将其不存在的返回值分配给变量。 - madreflection