![]() |
1
1
你可以这样说:
|
![]() |
2
3
如果你经常发现你必须检查
|
![]() |
3
1
其中TryResolve将this.Blah的值设置为null或this.OtherFunction,并返回适当的bool |
![]() |
4
1
我遇到的主要问题是对象返回类型和属性对通过调用该属性的方法返回的值的赋值。这两个系统闻起来都像是你在某个地方把继承搞砸了,最后得到了一个有状态的系统,这既是要测试的麻烦,也是要维护的痛苦。 也许最好是重新思考,而不是试图使用黑客和技巧来回避这个问题:我通常会发现,如果我试图滥用语言的功能,如宏,那么我的设计需要工作! 编辑 好吧,补充一下信息,也许这不是什么味道,但我还是建议如下:
这段代码令人担忧,因为它强制采用完全基于状态的方法,输出取决于之前发生的事情,因此需要特定的步骤来复制。这是一个痛苦的考验。另外,如果调用Function()两次,如果不知道Blah最初处于什么状态,就无法保证它会发生什么。
这意味着我们可以通过使用特定的Setup()调用函数(params)来复制测试中的任何功能,从而创建statefulData和一组特定的params。 理论上,这效率较低(因为在每个工厂调用上都会创建一个新的BlahdyBlah),但是可以用特定的数据缓存BlahdyBlah实例,并在工厂调用之间共享它们(假设它们没有影响其内部状态的其他方法)。然而,它更易于维护,而且从测试的角度来看,它完全消除了有状态数据的麻烦。 这也有助于消除最初的问题,因为当我们不依赖内部实例变量时,我们都可以从函数(params)外部解析(params,statefulData),如果blah==null或blah.SomeFlag==SomeFlag.Whatever,则不调用函数(params)。因此,通过将其移到方法之外,我们不再需要担心返回。 希望这是正确的,举个小例子,很难确切地知道该推荐什么,因为这里通常有困难/抽象的问题。 |
![]() |
5
0
如果您拥有Blah源代码,那么最好创建一些可解析的接口并让Blah实现它。 |
![]() |
6
0
|
![]() |
7
0
|
![]() |
Dimitriy Glefa · 返回和运行时 2 年前 |
![]() |
ck1987pd · python中检查循环是否未执行的最佳方法 3 年前 |
![]() |
Salman Shaukat · 如何检查函数中执行了哪个返回语句? 6 年前 |