Pharo Smalltalk 测试失败,因为消息不被理解
Pharo Smalltalk test failure because message not understood
我开始使用 Pharo 5 学习 Smalltalk。我现在正在关注 tutorial from the squeak guys 以正确掌握语法等
我刚开始,我只有两个classes(一个class BlankCell 和一个BlanCellTestCase class 用于单元测试)。 Blankcell 已经实现了一些消息,我在第 1.9 节的最后。
行为得到很好的执行,因为在操场上:
| cell exit |
cell := BlankCell new.
exit := cell exitSideFor: #north.
exit = #south
"the last statement properly returns a true or false"
测试用例上有3个测试,只有一个失败(与exitSide相关):
testCellExitSides
"Test the exit sides."
| cell exit |
cell := BlankCell new.
exit := cell exitSideFor: #north.
self assert: [ exit = #south ].
exit := cell exitSideFor: #east.
self assert: [ exit = #west ].
exit := cell exitSideFor: #south.
self assert: [ exit = #north ].
exit := cell exitSideFor: #west.
self assert: [ exit = #east ].
错误信息是
MessageNotUnderstood:BlockClosure>>ifFalse:
doesNotUnderstand
消息发送了一个指向句子 [ exit = #south ]
的参数
有人知道这里发生了什么吗?
TestCase>>assert:
需要一个布尔值,而不是一个块。
所以
self assert: [ exit = #south ].
应该写成
self assert: exit = #south
对于字符串比较,最好的方法是使用以下方法:
self assert: exit equals: #south
因为这样你会看到字符串的差异和布尔失败。
但是
Object>>assert:
需要一个块,而不是布尔值。
但是,您将在常规代码中使用此断言,而不是用于代码测试。
我开始使用 Pharo 5 学习 Smalltalk。我现在正在关注 tutorial from the squeak guys 以正确掌握语法等
我刚开始,我只有两个classes(一个class BlankCell 和一个BlanCellTestCase class 用于单元测试)。 Blankcell 已经实现了一些消息,我在第 1.9 节的最后。
行为得到很好的执行,因为在操场上:
| cell exit |
cell := BlankCell new.
exit := cell exitSideFor: #north.
exit = #south
"the last statement properly returns a true or false"
测试用例上有3个测试,只有一个失败(与exitSide相关):
testCellExitSides
"Test the exit sides."
| cell exit |
cell := BlankCell new.
exit := cell exitSideFor: #north.
self assert: [ exit = #south ].
exit := cell exitSideFor: #east.
self assert: [ exit = #west ].
exit := cell exitSideFor: #south.
self assert: [ exit = #north ].
exit := cell exitSideFor: #west.
self assert: [ exit = #east ].
错误信息是
MessageNotUnderstood:BlockClosure>>ifFalse:
doesNotUnderstand
消息发送了一个指向句子 [ exit = #south ]
有人知道这里发生了什么吗?
TestCase>>assert:
需要一个布尔值,而不是一个块。
所以
self assert: [ exit = #south ].
应该写成
self assert: exit = #south
对于字符串比较,最好的方法是使用以下方法:
self assert: exit equals: #south
因为这样你会看到字符串的差异和布尔失败。
但是
Object>>assert:
需要一个块,而不是布尔值。
但是,您将在常规代码中使用此断言,而不是用于代码测试。