和很多人一样,我也想真正地学习小对话和TDD。为了好玩,我一直在阅读优秀的俄罗斯方块TDD教程:https://github.com/orfjackal/tdd-tetris-tutorial/blob/tutorial/README.md。
并将代码转换为Smalltalk。
我已经到了第三组测试(https://github.com/orfjackal/tdd-tetris-tutorial/blob/tutorial/src/test/java/tetris/RotatingTetrominoesTest.java),它希望表示碎片的对象是不可变的。
我不知道该怎么做。我的每一次尝试都打破了先前的测试。我确实创建了一个TetrisTetrominoe类作为TetrisPiece的子类。
使用法老3.0。
谢谢。
发布于 2014-06-25 14:28:40
你必须考虑到语言之间的巨大差异。不久前,我写了一个博客帖子,其中包含了关于不可变的思想。
我认为,如果您想要跟踪另一种语言的测试,应该尝试为python或ruby查找一些测试,因为它们也是动态语言。
如果您想要保持不可变性,我建议您采用函数式方式,其中每个有意修改对象的方法都会创建一个具有所需属性的新对象。我怀疑这是否能满足java测试,因为java的功能不如动态的。
发布于 2014-07-16 14:54:06
在smalltalk中,您通常会通过询问变异器的发件人,然后验证只有创建实例的类方法才会引用它,从而测试其不可变性。例如:
testOnlyOneMutatorOfPrivateColor
self assert:
(SystemNavigation default allSendersOf: #privateColor:) size = 1https://stackoverflow.com/questions/24410752
复制相似问题