c#-带有lambda表达式的最小起订量?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-带有lambda表达式的最小起订量?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1529字,纯文字阅读大概需要3分钟。
内容图文
![c#-带有lambda表达式的最小起订量?](/upload/InfoBanner/zyjiaocheng/653/7b29757dce6a4cc7a2686389a0ac8832.jpg)
我正在尝试使用Moq 4.0.10827(在NuGet上)测试应用程序服务,并且需要查询存储库:
public class MyService
{
Repository<MyObject> _Repo;
public MyObject Get (string SomeConstraint)
{
return _Repo
.GetTheFirstOneOrReturnNull (M => M.Constraint.Equals (
SomeContraint, StringComparison.InvariantCultureIgnoreCase
)); // GetTheFirstOneOrReturnNull takes a Func<MyObject, bool>
}
}
如何使用Moq复制lambda表达式?我不断收到“不支持的表达式”异常.
这是我已经在做的一个想法:
[TestMethod]
public void GetByMyConstraintShouldReturnWithMyObject ()
{
// Arrange
const string MyConstraint = "Constraint";
MyObject Expected = new MyObject { Constraint = MyConstraint };
Mock<Repository<MyObject>> MockRepo = new Mock<Repository<MyObject>> ();
MockRepo.Setup (x => x.GetTheFirstOneOrReturnNull (M => M.Constraint.Equals (MyConstraint, StringComparison.InvariantCultureIgnoreCase)))
.Returns (Expected).Verifable ();
MyService Service = new MyService (MockRepo.Object);
// Act
MyObject Result = Service.Get (MyConstraint);
// Assert
Assert.AreSame (Expected, Result);
MockRepo.Verify ();
}
我环顾了其他一些答案,但是我无法真正弄清自己做错了什么(公认的是Moq的“傻瓜”).我得出的结论是,这将是一件痛苦的事情,但是我要进行很多这样的测试,并且希望现在变得牢固,而不是以后淹死.
将lambda表达式封装在对象内并传递到存储库中并执行查询的唯一选择吗?我不想只为我的测试环境更改代码,但是我也不想浪费时间尝试按照我的意愿来修改此代码.
解决方法:
这不需要太多测试.一个正确的测试将显示委派给FirstOrDefault的代码正在运行,然后所有后续测试都实际上在测试Func约束中的逻辑是否正确,而无需将其传递到存储库即可.
内容总结
以上是互联网集市为您收集整理的c#-带有lambda表达式的最小起订量?全部内容,希望文章能够帮你解决c#-带有lambda表达式的最小起订量?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。