Mock 的问题。会MOCK 的同学进来帮我看看

hnswxy 2011-11-09 11:37:27
先贴代码。代码有精简。只贴出相关的代码





public interface IUnitOfWork
{
int SaveChanges();
}


public class UnitOfWork : IUnitOfWork
{

public int SaveChanges()
{
return TaskDBContext.SaveChanges();
}
}


public interface IUserInfoRepository : IRepository<UserInfo>
{
}

public class UserInfoRepository : RepositoryBase<UserInfo>, IUserInfoRepository
{
public UserInfoRepository(IDatabaseFactory dataBaseFactory)
: base(dataBaseFactory)
{

}
}

public interface IUserInfoServices
{
bool UserInfo_Insert(UserInfo userInfo);
}

public class UserInfoServices : IUserInfoServices
{

private readonly IUserInfoRepository userInfoRepository;
private readonly IUnitOfWork unitOfWork;

public UserInfoServices(IUserInfoRepository userinfoRepository, IUnitOfWork unitOfWork)
{
this.userInfoRepository = userinfoRepository;
this.unitOfWork = unitOfWork;
}

public bool UserInfo_Insert(UserInfo userInfo)
{
userInfoRepository.Add(userInfo);
return unitOfWork.SaveChanges() == 1;
}








主要的代码就是如上面的的
熟悉 Repository 和 UnitOfWork 的朋友一定很容易明白的。

好了。
我现在要通过 MOCK MOQ 来测试 bool UserInfo_Insert(UserInfo userInfo)

我的相关测试代码如下:



public static IUnitOfWork MockUnitOfWork(List<UserInfo> userInfo)
{
var mockUnitOfWork = new Mock<IUnitOfWork>();
mockUnitOfWork.Setup(x => x.SaveChanges()).Callback<UserInfo>((s) => userInfo.Add(s));
return mockUnitOfWork.Object;
}

/// <summary>
///UserInfo_Insert 的测试
///</summary>
[TestMethod()]
public void UserInfo_InsertTest()
{
UserInfo userInfo = new UserInfo() { UserId = 1, UserName = "Test", Pwd = "oooooo", Email = "email@email.com" };

List<UserInfo> userInfos = new List<UserInfo>();
int userCount = userInfos.Count;

var userInfoRepositoryMock = new Mock<IUserInfoRepository>();
var unitOfWorkMock = MockUnitOfWork(userInfos);
var userInfoServicesMock = new Mock<IUserInfoServices>();

var userInfoServices = new UserInfoServices(userInfoRepositoryMock.Object, unitOfWorkMock);
userInfoServicesMock.Setup(o => o.UserInfo_Insert(It.IsAny<UserInfo>())).Returns(true);

userInfoServices.UserInfo_Insert(userInfo);

Assert.AreEqual(userInfos.Count, 2);

}






问题:

我在调试的时候。它报错。



mockUnitOfWork.Setup(x => x.SaveChanges()).Callback<UserInfo>((s) => userInfo.Add(s));




Invalid callback. Setup on method with parameters () cannot invoke callback with parameters (UserInfo)


我查了半天。我也没有找出来是什么地方有问题。
希望会 MOCK 的朋友能帮我看看。
我的QQ 2908 36527
...全文
253 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnswxy 2011-11-10
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20111109/23/1ab3dffe-cdf1-4df7-b786-ea3292b72ec0.html?768143194

帮我插一下楼。我没办法连续回三次
hnswxy 2011-11-10
  • 打赏
  • 举报
回复
应该不要吧

http://dailydevscoveries.blogspot.com/2011/04/invalid-callback-setup-on-method-with.html

先看看这个
kkbac 2011-11-10
  • 打赏
  • 举报
回复
不懂,纯帮顶,

直接按照错误提示理解的, 看看是不是要加载个userinfo的类到你的mock中
hnswxy 2011-11-10
  • 打赏
  • 举报
回复
自己顶一下。不然要沉了!
hnswxy 2011-11-10
  • 打赏
  • 举报
回复
自己顶一下。不然要沉了!
hnswxy 2011-11-10
  • 打赏
  • 举报
回复
我已经搞定了

http://topic.csdn.net/u/20111109/23/1ab3dffe-cdf1-4df7-b786-ea3292b72ec0.html

可以上这里看结果
hnswxy 2011-11-09
  • 打赏
  • 举报
回复
自己顶一下。不然要沉了!

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧