2013-09-05 44 views
9

Ai đó có thể xem mã bên dưới và xem có vấn đề gì không?nhiều thông số gọi lại trong Moq

[TestInitialize] 
    public void SetupMockRepository() 
    { 
     var memberId = "34345235435354545345"; 
     var title = "test"; 
     var url = "dafdsfdsfdsfdsafd"; 

     _mockPropertySearchRepository = new Mock<IPropertySearchRepository>(MockBehavior.Strict); 
     _mockPropertySearchRepository.Setup(p => p.SaveSearchURL(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Callback<string,string,string>((id,t,u) => ).Returns(new SavedSearchReturnResult()); 
    } 

Cảm ơn

+0

Tôi không thể chuyển 3 tham số cho cuộc gọi lại. – user2388013

+0

thuộc về http://codereview.stackexchange.com/ –

Trả lời

17

tôi quản lý để giải quyết vấn đề bản thân mình như sau

[TestInitialize] 
public void SetupMockRepository() 
{ 
    var memberId = "34345235435354545345"; 
    var title = "test"; 
    var url = "dafdsfdsfdsfdsafd"; 


    _mockPropertySearchRepository = new Mock<IPropertySearchRepository>(MockBehavior.Strict); 
    _mockPropertySearchRepository 
     .Setup(p => p.SaveSearchURL(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())) 
     .Callback<string,string,string>(
      (id, t, u) => 
      { 
       memberId = id; 
       title = t; 
       url = u; 
      }) 
     .Returns(new SavedSearchReturnResult()); 
} 
1

Đối với mỗi tham số mà phương pháp này mất, vượt qua một tham số kiểu phương pháp Callback.

someMock 
    .Protected() 
    .Setup("SomeMethod", ItExpr.IsAny<string>(), ItExpr.IsAny<string>()) 
    .Callback<string, string>((x, y) => {}); 

Các công trình trên cả hai đều có Protected và gọi lại bình thường.