【发布时间】:2020-07-31 11:37:40
【问题描述】:
我正在为我的 Web API 应用程序编写单元测试,使用 .net Core 创建。我使用 MSTest 和 MOQ 进行模拟。
它有很多层,如下所示。
Controller => Manager classes => Facade classes => Contract 类
我在控制器中提供了我模拟的实体。
[TestMethod]
public void InvoiceUpdateFinanceTest_Success()
{
var mock = mockFactory.OutstandingInvoicesDetailsMock();
dataController.InvoiceUpdateFinance(mock);
Assert.IsTrue(true);
}
Contract Class正在创建数据库连接实例并进行数据库调用
合约层代码示例如下
public class GradeWiseSlab : IMaintainContract
{
IDbConnection _db = new DBModel().InstanceCreation();
DynamicParameters dp = new DynamicParameters();
public MaintainContractEntities MaintainContractEntities { get; set; }
public void SaveData()
{
dp.Add("@N_VENDOR_ID", MaintainContractEntities.VendorId);
dp.Add("@N_CONTRACT_SUB_TYPE_ID", MaintainContractEntities.SubContractType);
dp.Add("@N_PAYMENT_TERM", MaintainContractEntities.PaymentTerm);
dp.Add("@S_TRANSACTION_CURRENCY", MaintainContractEntities.TransactionCurrency);
dp.Add("@S_DOC_NAME", MaintainContractEntities.DocNames);
dp.Add("@S_APPROVAL_STATUS", MaintainContractEntities.ApproalStatus);
dp.Add("@D_FROM_DATE", MaintainContractEntities.FromDate);
dp.Add("@D_TO_DATE", MaintainContractEntities.ToDate);
this._db.Query(Constant.SP_GRADE_WISE_SLAB, dp, commandTimeout: 0, commandType: CommandType.StoredProcedure);
}
我如何编写覆盖所有层的测试用例,即从控制器到合约但没有实际的数据库可触及?
我没有使用实体框架,我使用的是 Dapper 库。
【问题讨论】:
标签: unit-testing asp.net-web-api mstest web-api-testing vs-unit-testing-framework