我目前正在使用.NET SDK来处理asp.net核心项目上的付款。我想使用单元测试来自动化测试,但是事实证明这很困难。
该库使用的所有类(特别是“订阅”等)都有内部构造函数或需要其他内部实例。从json创建实例以将其通过函数传递的选项已消失。
也无法构造您自己的实例,因为类属性都是getter,而只有带有setter的“ * request”类,但是这些并没有太大帮助,因为应用程序无需处理它们。
Webhook测试类完全没有用,因为它给出的实例为空,仅设置了ID和状态。我的应用程序需要来自订阅的更多数据,例如交易实例,插件,开票日期等;所有这些都没有填充。
我有几个需要测试的课程,必须手动进行,这是不切实际的,而且浪费了大量时间。我还缺少另一种方法吗?
为什么图书馆是这样设计的,所以我认为保持图书馆如此封闭似乎不是很实际。
答案 0 :(得分:0)
对于那些还在寻找的人,没有任何方法可以直接对类本身进行单元测试,而无需编辑库。从好的方面来看,使用MOQ(https://github.com/Moq/moq4/wiki/Quickstart)并不会失去所有希望,它允许您模拟类以及更多类。我用它来模拟我想要测试的类,例如,创建一个我可以完全控制的事务:
模拟交易对象。
public Mock<Result<Transaction>> SuccessTransaction_Mock { get; set; }
public Result<Transaction> SuccessTransaction => SuccessTransaction_Mock.Object;
设置您的单元测试感兴趣的方法。
// Success Transaction
SuccessTransaction_Mock = new Mock<Result<Transaction>>();
SuccessTransaction_Mock.Setup(s => s.IsSuccess())
.Returns(true);
SuccessTransaction_Mock.SetupGet(s => s.Target)
.Returns(BtTransaction);
SuccessTransaction_Mock.SetupGet(s => s.Message)
.Returns("");
声明
Assert.True(SuccessTransaction.IsSuccess()) // Will return the value that was setup in the moq object
考虑到方法是虚拟的,您几乎可以模拟Braintree Client库中的任何类(大多数类都具有可以使用的接口)。