2012-04-19 72 views
3

我有一个非常简单的方法,我试图测试。 _interactionService会弹出一个对话框,要求用户确认是否删除了客户。如果在框上单击适当的按钮,则会调用提供的操作。该操作操纵上下文并保存更改。保存完成后,会调用另一个操作。测试关闭

private void Delete(object entity) 
{ 
    _interactionService.ShowConfirmationBox("Delete?", "Are you sure you want to delete this customer?",() => 
     { 
      Customer customer = entity as Customer; 
      Context.Attach(customer); 
      Context.Delete(customer); 
      Context.Save(() => DoSomethingElseWhenSaveComplete); 
     }); 
} 

我不知道如何测试这种方法。我嘲笑了服务和环境,但是如何测试关闭?

+0

不知道答案,我在想它。你不应该测试私人方法。 – 2012-04-19 15:51:58

+0

为什么'tdd'标签?应该有'单元测试'而不是 – GolfWolf 2012-04-19 15:54:02

回答

3

如果上下文被嘲笑,那么您可以在您的测试使用callback

Action saveAction = null; 
contextMock 
    .Setup(c => c.Save(It.IsAny<Action>()) 
    .Callback<Action>(a => saveAction = a); 

// Call delete... 

Assert.IsNotNull(saveAction); 

saveAction(); 

// Assert that DoSomethingElseWhenSaveCompleted was done 
0

你应该在服务中测试这个(API)的水平,而不是UI层。你想用你的测试达到什么目的?

  1. 你们是不是要确认你可以拨打删除

  1. 你想测试delete方法

我的假设是2号这么写针对服务层与UI类的测试。