English 中文(简体)
a. 单位测试一个有多个受扶养人的WCF服务
原标题:Unit testing a WCF service with multiple dependencies

我当然希望有人能够帮助缓解我的沮丧。 我正试图找到一种很好的办法,对我的“世界合作框架”服务执行类别进行单位测试,但我发现提供解决办法的每一种资源都仅限于只采用单一方法/操作的服务。

就我而言,我有一个包含几种服务方法/业务的班级。 服务班的目的是为核心应用范围内实施的行为提供接口。 因此,每种方法/行动都负责:

  1. accepting a Request object from the caller
  2. validating the object s properties
  3. creating an instance of the applicable Command object that carries out the operation
  4. mapping the Request object s properties to the Command object.
  5. executing the Command object
  6. mapping the results to a Response object
  7. returning the Response to the caller

此外,服务方法处理出现的任何例外情况,并退回到WCF Fault。

我们正在使用春天。 IoC (DI) and AOP。 班次在春天即时,使我们能够利用春天的参数,进行步调。 2. 否则,我们也将春.用于第三步。

大部分工作都是出色的。 然而,在为核实服务方法的行为而撰写单位测试时,我被拖走,试图排除以多种指挥物体(一种方法)处理服务依赖者的正确途径。

很显然,我没有问题 mo弄指挥物体(我们使用Moq,btw),也没有问题进行黑箱检查。 我正试图对内部逻辑进行白色盒式测试,例如核实第4步是正确的,或者如果指挥部反对放弃一个例外,该服务处就正确处理。 就这些原因而言,我使用了突击式的指挥物体。

问题在于找到一种假设情景的最好做法,即所试验物体具有多重依赖性,特别是当我只关心其中之一接受我所主持的试验时。

理论家对DI的做法只是实用的,因为我需要向建筑商提出尽可能多的论点,因为我确实在我服务上这样做(而且这可能很多)。 排他性令我感到关切,因为只有用于检测的装置才会存在,而且在许多情况下,还会有很多。

这项服务旨在将第4步引向一种虚拟方法,即,在违约时,使用普春来瞬息击指挥物体,但以继承和压倒性办法重回 mo。 但事实证明,这种情况也是不明智的。

因此,在通过在线文章展示各种解决办法之后,正如我所说的那样,仅仅反映了一种采用一种方法/操作的服务,我正在寻求某种指导,以便在处理包含多种方法和多重依赖性的实际世界服务时,采用、维持和扩大的方法。

牢记我可以不使用春天来注入模拟的突击性物体,因为我需要提及cks,以便制造和核实方法的行为。 (无需提及我的测试取决于春季是否正确工作)

最佳回答

如同你一样,你已经做了大部分的艰苦工作。

由于你已经使用过DI集装箱,或许你可以简单地制造和注射拦截步骤的弹道。 3. 。 那么,你可以了解移民归化局集装箱接收的情况,以及验证如何检验头两个步骤,然后,你可以回击Mock,不管你想要测试其余步骤。

你已经在很大程度上依赖春天。 用这种额外距离向我说是合理的。 必须找到一种办法,暂时改变你的信任,以使用特定的磁克。 如果不考虑一个简单的工厂,供您使用,使您能够找到工作。

问题回答

我的班级通常只是真正功能的 thin子。 在这种情况下,你可以考虑停止测试服务本身,但是否把所有电话都交给多个内心之一,因为后者会更具体地单独测试。





相关问题
Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How do I compare two decimals to 10 decimal places?

I m using decimal type (.net), and I want to see if two numbers are equal. But I only want to be accurate to 10 decimal places. For example take these three numbers. I want them all to be equal. 0....

Exception practices when creating a SynchronizationContext?

I m creating an STA version of the SynchronizationContext for use in Windows Workflow 4.0. I m wondering what to do about exceptions when Post-ing callbacks. The SynchronizationContext can be used ...

Show running instance in single instance application

I am building an application with C#. I managed to turn this into a single instance application by checking if the same process is already running. Process[] pname = Process.GetProcessesByName("...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签