单元测试基于堆栈的虚拟机c#

时间:2015-12-06 02:21:44

标签: c# unit-testing moq microsoft-fakes

我目前正在开发一个基于堆栈的虚拟机,它从文本文件中加载命令,我需要测试类Increment和Decrement操作。 我对单元测试相当新,但我已经做了几个例子来解决语法问题,但现在我已经陷入困境了!

当我尝试运行测试时,我得到一个空值异常,所以我想我的下一个问题是我最好使用Moq或Fakes传递一个值来测试它是否通过了预期的结果? / p>

我看过Fakes汇编,这是我想出的但是我不确定如何传递System.Collections

在此之后我陷入困境,任何帮助/建设性的帮助都会非常好。

编辑 - 在调用此类之前,整数值已被推送到堆栈。

1 个答案:

答案 0 :(得分:0)

听起来你可能会遇到一点摩擦,因为这个问题已经有些奇怪了。为了我的钱,我avoid the difficulty of mocking重新安排你的问题。例如,如果您将堆栈传递给操作本身,您将获得更自然的测试;

Decr

您将在enum Suit: Int, CaseIterable { case None case Spade, Heart, Diamond, Club static let allNonNullCases = Suit.allCases[Spade.rawValue...] } enum Rank: Int, CaseIterable { case Joker case Two, Three, Four, Five, Six, Seven, Eight case Nine, Ten, Jack, Queen, King, Ace static let allNonNullCases = Rank.allCases[Two.rawValue...] } func makeDeck(withJoker: Bool = false) -> [Card] { var deck = [Card]() for suit in Suit.allNonNullCases { for rank in Rank.allNonNullCases { deck.append(Card(suit: suit, rank: rank)) } } if withJoker { deck.append(Card(suit: .None, rank: .Joker)) } return deck } 课程中避免不必要的状态。这是依赖性倒置原则的一个示例,其中依赖对象被传递到类中,而不是由它创建。