c# - 使用 Moq 测试 get/set

标签 c# unit-testing moq

我正在尝试测试一组属性,但我不知道在这种特殊情况下我该如何做。 我正在使用 .NET 4.5 和 Moq 框架。

我有这个方法:

 public Invoice Approve(Invoice invoiceToBeApproved)
{
    var approvedInvoiceStatus = InvoiceStatusRepository.First<ApprovedStatus>();

    invoiceToBeApproved.Car.RemainingSeats -= 1;

    if (invoiceToBeApproved.Car.RemainingSeats < 0)
    {
        throw new BusinessException("There are no remaining seats");
    }

    invoiceToBeApproved.InvoiceStatus = approvedInvoiceStatus;

    InvoiceRepository.Update(invoiceToBeApproved);

    context.SaveChanges();

    return invoiceToBeApproved;
}

我正在进行单元测试(不是集成测试,所以我不会去数据库)。

我要测试的是

invoiceToBeApproved.Car.RemainingSeats -= 1;

我尝试使用 VerifyGet,但我就是无法访问该属性。

我的部分测试是这样的

var newInvoice = InvoiceService.ApproveInvoice(invoice);
InvoiceStatusRepository.Verify(x => x.First<ApprovedStatus>());
InvoiceRepository.Verify(x => x.Update(It.IsAny<Invoice>()));
context.Verify(x => x.SaveChanges(), Times.Exactly(1));

如何测试 RemainingSeats 的设置/获取?

提前致谢!

最佳答案

我认为您根本不应该为此使用 Moq。假设 Invoice 是一个 POCO,只需断言该属性的值即可。

关于c# - 使用 Moq 测试 get/set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27505905/

相关文章:

c# - MVC5 : Object reference not set to an instance of an object?

.net - Visual Studio,测试资源管理器启动单元测试很慢

unit-testing - 什么不应该进行单元测试?

c# - 如何使用最小起订量为单元测试设置服务器变量

c# - 如何将泛型类限制为某些类型(包括 native 数据类型)

c# - 使用表达式将查询抽象到 Azure 表存储

c# - xUnit.NET 有什么好的文档/书籍/教程吗?

c# - 模拟任何给定类型参数的泛型方法调用

c# - 使用 Moq 测试抽象类

c# - 当使用 Parallel BeginInvoke 时有效而 Invoke 无效 - c# 4.0