sic*_*umi 3 c# unit-testing moq
我有一个相当复杂的程序架构,只有很少的逻辑但很多事件处理程序传递.我正在构建一个服务器框架的框架,我有以下类:
Core,听取:
CommHandler,听取:
CommLayer,听取:
IServerMock,我用模拟框架(MOQ)存根.
这种由事件触发的单元测试关系的最佳方法是什么?我知道单元测试应该是非常孤立和细化的东西,但我能想到测试的唯一方法是测试整个过程并检查Core的最终输出.
你需要为每个类做一个抽象,所以Core取决于ICommHandlernot CommHandler等等.依赖项应该通过构造函数提供,这样您就可以轻松地单独测试每个类,因为您可以模拟它的依赖性.
public class Core
{
private ICommHandler commHandler;
public Core(ICommHandler commHandler)
{
this.commHandler = commHandler;
}
}
Run Code Online (Sandbox Code Playgroud)
在您的生产代码中,您可以执行以下操作:
var core = new Core(new CommHandler());
Run Code Online (Sandbox Code Playgroud)
虽然最好使用IOC容器来管理对象的实例化,因为CommHandler它有自己的依赖关系,但你应该分别研究它.
然后在你的单元测试中,你可以这样做:
[Test]
public void TestSomeCommHandlerEvent()
{
var mockCommHandler = new Mock<ICommHandler>();
// set up the mock
var core = new Core(mockCommHandler.Object);
}
Run Code Online (Sandbox Code Playgroud)
这样做允许您使用可以配置其行为的模拟替换测试中的ICommHandler实现.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |