我正在抽象一类我的历史跟踪部分,所以它看起来像这样:
private readonly Stack<MyObject> _pastHistory = new Stack<MyObject>(); internal virtual Boolean IsAnyHistory { get { return _pastHistory.Any(); } } internal virtual void AddObjectToHistory(MyObject myObject) { if (myObject == null) throw new ArgumentNullException("myObject"); _pastHistory.Push(myObject); } internal virtual MyObject RemoveLastObject() { if(!IsAnyHistory) throw new InvalidOperationException("There is no prevIoUs history."); return _pastHistory.Pop(); }
我的问题是我想单元测试Remove会返回最后添加的对象.
> AddObjectToHistory
> RemoveObjectToHistory – >返回通过AddObjectToHistory放入的内容
但是,如果我必须先调用Add,它不是真正的单元测试吗?但是,我能看到以真正的单元测试方式执行此操作的唯一方法是在构造函数中传入Stack对象或模拟出IsAnyHistory ……但是模拟我的SUT也很奇怪.所以,我的问题是,从教条的角度来看,这是一个单元测试吗?如果没有,我该如何清理它…是构造函数注入我唯一的方法?它似乎只是需要传递一个简单的对象?是否可以将这个简单的物体推出注入?