如何使用LINQ表达式从模拟存储库中返回新对象?

乔纳森·基特尔(Jonathan Kittell)

我正在使用Rhino Mocks,并创建了一个Mock存储库。

var salesForcePolicies = MockRepository.GenerateMock<IRepository<SalesForcePolicy>>();

我有一个私有方法可以policy从存储库中返回一个项目。

private SalesForcePolicy GetSalesForcePolicyByClientId(decimal clientId)
{
    var policy = salesForcePolicies.FindByExp(x => x.IdNumber == clientId).FirstOrDefault();
    if (policy == null) throw new AccountUpdaterException("Policy Not Found in Sales Force Lookup Table.");
    return policy;
}

我正在尝试让存储库在private方法中调用查询时返回具有一个属性集的新对象我不想破坏封装并将其设置为public virtual

当我写这篇文章时,编译器正在尖叫...

var clientId = decimal.Parse("123456");
salesForcePolicies.Stub(x => x.FindByExp(y => y.IdNumber == clientId)).Return(new SalesForcePolicy { PolicyNumber = "123456" });

如何查询该模拟存储库以在查询新对象时返回它?

Error: The best overloaded method match for 'Rhino.Mocks.Interfaces.IMethodOptions<System.Linq.IQueryable<Data.Models.Ussi.SalesForcePolicy>>.Return(System.Linq.IQueryable<Data.Models.Ussi.SalesForcePolicy>)' has some invalid arguments.
乔纳森·基特尔(Jonathan Kittell)

技巧是传递null表达式参数,然后使用.IgnoreArguments()对于返回,请创建new List<T>().AsQueryable()

[TestMethod]
public void Can_Mock_Sales_Force_Repo()
{
    // arrange
    var salesForcePolicyRepo = MockRepository.GenerateMock<IRepository<SalesForcePolicy>>();

    // act
    var clientId = decimal.Parse("123456");
    var salesForcePolicy = new SalesForcePolicy { PolicyNumber = "123456" };
    IEnumerable<SalesForcePolicy> salesForcePolicies = new List<SalesForcePolicy> { salesForcePolicy };
    salesForcePolicyRepo.Stub(x => x.FindByExp(null)).IgnoreArguments().Return(salesForcePolicies.AsQueryable());
    var policy = salesForcePolicyRepo.FindByExp(x => x.IdNumber == clientId).FirstOrDefault();

    // assert
    Assert.IsTrue(policy == salesForcePolicy);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何模拟Lambda表达式anymatch返回对象

如何在通用存储库中实现表达式?

如何在moq存储库中执行表达式?

如何使用linq表达式展平嵌套对象

是否可以使用EF C#Linq将数学表达式存储在数据库中

如何使用Lambda表达式返回对象数组中的成员值

带有附加的Linq表达式的Moq存储库。

如何使用LINQ中的表达式执行此查询?

在linq表达式中创建新对象时,获取列表中的当前索引位置

使用 Rhino Mocks 的存储库对象的存根函数表达式

我如何从表达式中“返回”?

Linq 中的错误 - 无法转换为存储表达式

如何解决 C# 中 linq 的 lambda 表达式中的对象引用错误?

在通用存储库中使用表达式选择

如何使用Lambda表达式进行单元测试实体框架/存储库模式

使用正则表达式隐藏存储在数组中的数据库信息

如何使用表达式在LINQ中分配属性选择新

如何对使用LINQ表达式返回的单个行的特定列属性的值求和?(C#)

如何从SQL Server 2014使用LINQ lambda表达式返回多行?

未存储在 lambda 表达式中创建的对象

如何在JavaScript中模拟let表达式?

使用LINQ表达式更新对象的属性

我如何处理 Kotlin 中返回的对象表达式

如何将列表传递到使用Java lambda表达式的新对象的构造函数?

如何使用正则表达式拆分字符串值并返回数组和对象?

如何使用|| 在lambda表达式中

如何将对象分类到存储桶中以表达为有效的JPQL表达式?

Linq表达式返回null

Linq对象和Lambda表达式