WEB开发网
开发学院软件开发C语言 WF单元测试系列3:测试Activity的行为 阅读

WF单元测试系列3:测试Activity的行为

 2010-10-01 08:19:39 来源:WEB开发网   
核心提示: 在上面的代码中,下面一句比较重要 _mockEmployeeRepository = _mocker.CreateMock<IEmployeeRepository>(); 这一句创建了针对接口IEmployeeRepository的Mock对象,WF单元测试系列3:测试Activi

在上面的代码中,下面一句比较重要

_mockEmployeeRepository = _mocker.CreateMock<IEmployeeRepository>();

这一句创建了针对接口IEmployeeRepository的Mock对象。注意:在我的工程里,名没有实现这个接口。这就是Mock的特点,可以不用实现功能就能测试。可谓针对接口测试吧!:)

在接下来的测试方法中,首先使用_mocker.Record()记录对Mock对象的操作。在_mocker.Record()的Unsing块中的所有操作,都是我们期待的Mock对象的“行为”。而_mocker.Playback()块则是对Activity的实际测试过程,在这个过程中,必须和Record块对_mockEmployeeRepository的操作一致------也就是说,也调用了它的Add()方法。如果一致,测试通过,否则Rhino Mock会抛出异常,测试失败!

我们运行一下测试,失败!因为还没有为StoreNewAcmeEmployee的Execute()方法添加逻辑。

回过头来实现StoreNewAcmeEmployee的Execute()方法:

Execute
protected override ActivityExecutionStatus Execute(ActivityExecutionContext

executionContext)
        {
            NewEmployee = new AcmeEmployee(Guid.NewGuid().ToString(), FirstName,

LastName, Email);
            EmployeeDataStore.Add(NewEmployee);
            return ActivityExecutionStatus.Closed;
        }

最关键的一个操作就是调用了注入进来的EmployeeDataStore的Add()方法!

再次运行测试!通过!

上面讨论了如何对Activity进行“行为测试”,当然这还只是一个开始。

上一页  1 2 3 4 5 6  下一页

Tags:WF 单元

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接