yangyang

a .NET Developer

UnitTest


从单元测试来对代码逻辑进行改进

这个例子来源于Pro ASP.NET Core 3这一本书,书中介绍了对ASP.NET Core程序进行单元测试的方法,其中有一例,在对购物车逻辑模块进行功能开发的时候,发现单元测试很“吃力”,后面得到了如何对其进行优化,从而大大简化了单元测试的方法。所以这里记录一下。 购物车的实现     这里只是一个简单的购物车实现,用户在挑选物品放进购物车的时候,将数据临时存放在了Session中(缺点是如果服务器重启,数据会丢失,这里不讨论)。购物车的模型Cart如下: public class Cart { public List<CartLine> Lines { get; set; } = new List<CartLine>(); public virtual void AddItem(Product product, int quantity) { …

UnitTest SRP

Reactive Extensions入门(6):使用Rx进行单元测试

Rx本身就是一个功能强大的测试框架。本文将介绍如何使用Rx模拟异步方法调用返回预定的值来辅助针对一步方法调用的单元测试。Rx可以模拟经过一段预定时间返回结果的异步方法,从而简化了异步处理方法的测试。Rx也可以模拟异步方法返回错误的场景,使得代码测试可以覆盖多有的用例。本文将介绍Rx中的TestSheduler方法,他可以模拟耗时的异步操作,但是能在测试的时候能够立即执行。 1. 模拟异步方法 开发者可能会对测试与时间有关的异步方法会感到头疼。与测试同步方法不同,异步方法不仅需要返回需要的值,而且还要能够模拟出方法耗时以及延迟的效果。 有很多工具能够用来测试同步方法,但是测试异步方法则需要一定的技巧。我们可以使用Thread.Sleep()来模拟需要长时间执行的方法,但是该方法能用来测试的时间用例非常粗糙,在有些对执行时间要求比较高的场景,Thread. …

Reactive Extensions Rx Observable Scheduler UnitTest

  • 1