我目前正在开发一个基于堆栈的虚拟机,它从文本文件中加载命令,我需要测试类Increment和Decrement操作。 我对单元测试相当新,但我已经做了几个例子来解决语法问题,但现在我已经陷入困境了!
当我尝试运行测试时,我得到一个空值异常,所以我想我的下一个问题是我最好使用Moq或Fakes传递一个值来测试它是否通过了预期的结果? / p>
我看过Fakes汇编,这是我想出的但是我不确定如何传递System.Collections
在此之后我陷入困境,任何帮助/建设性的帮助都会非常好。
编辑 - 在调用此类之前,整数值已被推送到堆栈。
答案 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
}
课程中避免不必要的状态。这是依赖性倒置原则的一个示例,其中依赖对象被传递到类中,而不是由它创建。