如何在使用真实实现时使用NSubstitute来模拟属性

时间:2017-08-14 09:41:24

标签: unit-testing mocking nsubstitute

我有一些NHibernate存储库,我希望我的SpecFlow测试能够覆盖它们。

我有一个像这样的员工资料库:

x$2

public class StaffRepository : NHibernateRepository<IStaff>, { public IEnumerable<IStaff> GetByStaffId(string staffId) { return Repository.Where(ab => ab.StaffId == staffId); } } 是一个存在于基类型上的属性 - 这是我想要模拟的属性。我正在使用结构图来注入我的所有类,然后像这样模拟StaffRepository:

Repository

我的问题是,当我像这样嘲笑pmsRepository = Substitute.For<StaffRepository>(); ApplicationContext.Register<IStaffRepository, StaffRepository>(pmsRepository); 属性时:

Repository

我总是收到以下错误消息:

pmsRepository.Query.Returns(ListOfStaffes.AsQueryable());

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我最终想通了。 Repository必须是虚拟的或抽象的;将此更改为虚拟解决了问题。