问题描述
我正在为在B
数据库上运行的存储库类编写集成测试。
我要测试以下事实:两次插入同一条记录会引发异常,我正在使用MySQL
xUnit
该测试工作正常,但我希望我的测试与可能的一样通用,如果稍后我的 [Fact]
public void Insert_SamePaymentTwoTimes_ThrowInvalidOperationException()
{
Payment payment;
using (var transaction = new TransactionScope())
{
int? id = 0;
id = paymentRepository.Insert(testPayment);
payment = paymentRepository.GetById(id);
Assert.Throws<MySql.Data.MySqlClient.MySqlException>(() => paymentRepository.Insert(payment));
}
}
写道PaymentRepository
时该测试将失败。
我想出了这个解决方案:
更改MSSQL
函数,使其引发一般系统异常:
Insert()
并在我的测试中捕获该异常:
using (var conn = GetOpenConnection())
{
try
{
paymentId = conn.Insert(paymentData);
}
catch (MySqlException ex)
{
throw new InvalidOperationException(ex.Message);
}
}
此方法是否有其他选择?我在考虑也许要实现自定义 [Fact]
public void Insert_SamePaymentTwoTimes_ThrowInvalidOperationException()
{
Payment payment;
using (var transaction = new TransactionScope())
{
int? id = 0;
id = paymentRepository.Insert(testPayment);
payment = paymentRepository.GetById(id);
Assert.Throws<InvalidOperationException>(() => paymentRepository.Insert(payment));
}
}
以便尽可能通用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)