2013-08-22 62 views
12

Tôi có một ViewModel trong đó, các nhà xây dựng, thực hiện cuộc gọi đến một phương pháp async khoảng trống để thêm vào một bộ sưu tậpRhino Mock Stub Async Phương pháp

public MyViewModel(ICommandHandler commandHandler) 
{ 
    _commandHandler = commandHandler; 
    SetupCollection(); 
} 


private async void SetupCollection() 
{ 
    var commands = GetCommands(); 

    foreach (var command in commands) 
    { 
     var response = await _commandHandler.ExecuteGetReply(command); 

     if (response != null) 
      Response.Add(response); 
    } 
} 

Làm thế nào chính xác tôi sẽ còn sơ khai lệnh _commandHandler.ExecuteGetReply() để trả về giá trị ?

Ngoài ra, bạn có thể có chức năng như vậy trong hàm khởi tạo để thực hiện việc này không? Hoặc điều này có lẽ nên đi trong một cuộc gọi ... override void OnActivate() (Tôi đang sử dụng Micro Caliburn)?

Trả lời

19

ICommandHandler.ExecuteGetReply dường như trở về một Task<Response> để bạn có thể làm điều gì đó như:

ICommand commandArg; 
Response response; 
stubHandler.Stub(h => h.ExecuteGetReply(commandArg)).Return(Task.FromResult(response)); 

tôi sẽ không gọi một async phương pháp khoảng trống từ constructor của bạn tuy nhiên, vì bạn sẽ không có cách nào được thông báo khi có hoàn thành.

+0

Điều gì sẽ xảy ra nếu 'commandHandler.ExecuteGetReply' ném ngoại lệ? –