我有一个类A
其中包含B
类的实例和A
函数foo
调用B
函数set
,它更新了B
的状态。下面是一个代码示例(在Javascript):如何对依赖于另一个类的类进行单元测试以更改某些东西的状态?
A = function() {
this.init = function (b) {
this.b = b
}
this.foo = function (val) {
this.b.set(val)
}
this.bar = function() {
return this.b.get()
}
}
B = function() {
this.set = function (val) {
this.v = val
}
this.get = function() {
return this.v
}
}
我如何单元测试的foo
功能,同时保持测试A
不依赖于B
的实现(使用嘲弄和存根,什么不可以) ?
“小功能妒”应该是“闻” – 2010-06-28 22:31:32
这是否意味着测试依赖于实现,这是不好的TDD?如果'foo'的实现改变了,所以它不使用'B'的'set'呢? – Chetan 2010-06-28 23:02:39
请求是用模拟B进行测试。我通常不会模拟B,除非A的外部行为是如何影响B的(例如,如果B是外部库)。关于嗅觉的说明是这种类型的行为(A)可能是有问题的 – 2010-06-29 13:52:08