在测试中检查 class 的文本表示?

Checking textual representation of a class in a test?

假设我在 Pharo Smalltalk 中创建了一个 class MyClass...

如果我在工作区写:

MyClass new.

和 select print-it (Ctrl-P),我得到:

A MyClass

稍微修改 MyClassprintOn: 方法, 我可以得到更多,例如:

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'