2
我有一個名爲IAuthorizationRepository具有以下接口的接口:ParameterMismatch異常時使用Moq的回調方法
public interface IAuthorizationRepository
{
IQueryable<User> Users { get; }
Int32 SaveChanges();
void Detach(Object entity);
void Attach(IEntityWithKey entity);
void DeleteObject(Object entity);
void AddObject(String entitySetName, Object entity);
}
當用戶被定義爲如下:
public class User{
string Username { get; set; }}
我有一個這樣的TestInitialize方法:
[TestInitialize]
public void Init()
{
_repository = new Mock<IAuthorizationRepository>();
List<User> users = new List<User>();
User user = new User();
user.Username = "test_osness";
_repository.ExpectGet(r => r.Users).Returns(users.AsQueryable());
_repository.Expect(r => r.AddObject("Users", It.IsAny<Object>()))
.Callback<User>(u => users.Add(u));
_repository.Object.AddObject("Users", user);
Console.WriteLine("Users: {0}", _repository.Object.Users.Count());
}
但是當我運行測試時,我得到一個System.Reflec調用_repository.Object.AddObject(「用戶」,用戶)的行上調用.getParameterCountException。我是Moq新手,但從我能告訴的這應該工作。我究竟做錯了什麼。我想在AddObject(「用戶」,對象)被調用時將用戶對象添加到我的列表中。所以_repository.Object.Users.Count()應該反映正確的用戶數量。