![]() |
1
30
调用SETUPGET时使用回调的原因是_sessionreport引用是按值传递的,这意味着对set方法的后续调用不会更新get方法返回的值。 看清楚发生了什么。如果您设置了如下模拟模型:
在伪代码中,模拟的实现看起来有点像
所以这样做是行不通的:
显然,我们需要向set方法添加一些行为,因此我们像这样设置mock
这导致模拟的实现看起来有点像
但是,这会导致以下问题:
本质上,属性上的“get”方法仍然返回对原始对象报告的引用,因为引用是通过值传递给SETUPGET方法的。 因此,每次调用setter时,我们需要更新report getter返回的值,该值将指向原始代码。
这样可以确保get方法返回的值始终与上一次对set方法的调用保持同步。并导致(功能上)行为如下:
|
![]() |
2
10
将SETUPGET放入SETUPSET实现中似乎非常/过于复杂。 返回委托会更容易,因此每次都要对其进行评估,而不仅仅是返回引用的副本。 像这样的东西在眼睛上要容易得多(而且应该表现得更好,因为你不需要不断地重新定义getter)。
|
![]() |
Pikachu620 · 在Visual C中运行时编译# 6 年前 |
![]() |
N6151H · 使用annotate()包括django模型对象属性 6 年前 |
![]() |
Rekshino · 在编译时获取类的属性名,而不进行对象实例化 6 年前 |
![]() |
Mahhdy · VBA类模块:从类内的对象获取属性 6 年前 |
|
user5441558 · c中get前缀背后的原因# 6 年前 |
|
user9409572 · 无法更改属性的值 6 年前 |