在测试中检查 class 的文本表示?
Checking textual representation of a class in a test?
假设我在 Pharo Smalltalk 中创建了一个 class MyClass...
如果我在工作区写:
MyClass new.
和 select print-it (Ctrl-P),我得到:
A MyClass
稍微修改 MyClass 的 printOn: 方法,
我可以得到更多,例如:
A MyClass with value: 5
+++
我的问题来了...我怎样才能做一个test(TestCase-class的实例)
检查 MyObject 的文本表示 - 我会得到什么
如果我做了 "MyObject new" 和 Print-It - 它应该是什么?
如何获得文本表示以便我可以对照
当我执行 self assert: equal: (或类似的东西)在我的测试中?
例如,使用我自定义的 printOn: 方法后,它将
看起来像
A MyClass with value: 5
对于这样的新手问题很抱歉,但是...
要获取对象的文本表示,您可以向对象发送消息 printString
。例如 Object new printString
将 return 你的字符串 'an Object'
.
要创建测试用例,您应该创建 TestCase
:
的子类
TestCase subclass: #MyClassTestCase
instanceVariableNames: ''
classVariableNames: ''
package: 'MyTest-Package'
那么一个测试就是一个以test
开头的方法。例如,以下测试验证 Object new
:
的字符串表示
testClassRepresentation
self assert: Object new printString equals: 'an Object'
假设我在 Pharo Smalltalk 中创建了一个 class MyClass...
如果我在工作区写:
MyClass new.
和 select print-it (Ctrl-P),我得到:
A MyClass
稍微修改 MyClass 的 printOn: 方法, 我可以得到更多,例如:
A MyClass with value: 5
+++
我的问题来了...我怎样才能做一个test(TestCase-class的实例) 检查 MyObject 的文本表示 - 我会得到什么 如果我做了 "MyObject new" 和 Print-It - 它应该是什么?
如何获得文本表示以便我可以对照 当我执行 self assert: equal: (或类似的东西)在我的测试中?
例如,使用我自定义的 printOn: 方法后,它将 看起来像
A MyClass with value: 5
对于这样的新手问题很抱歉,但是...
要获取对象的文本表示,您可以向对象发送消息 printString
。例如 Object new printString
将 return 你的字符串 'an Object'
.
要创建测试用例,您应该创建 TestCase
:
TestCase subclass: #MyClassTestCase
instanceVariableNames: ''
classVariableNames: ''
package: 'MyTest-Package'
那么一个测试就是一个以test
开头的方法。例如,以下测试验证 Object new
:
testClassRepresentation
self assert: Object new printString equals: 'an Object'