如何使用NSubstitute模拟注入的类?

时间:2017-08-11 14:34:46

标签: dependency-injection structuremap nsubstitute structuremap-automocking

我正在使用StructureMap进行依赖注入。我有以下存储库:

public class StaffRepository : NHibernateRepository<IStaff>, 
{
    public IEnumerable<IStaff> GetByStaffId(string staffId)
    {
        return Repository.Where(ab => ab.StaffId == staffId);
    }
}

我正在编写一个测试来测试控制器中的方法(ReturnToWorkController):

注入了此存储库:

public ReturnToWorkController(
            IStaffRepository staffRepository)
        {
            this.staffRepository = staffRepository;
        }

我正在测试我的控制器(使用SpecFlow),方法是调用容器并使用StructureMap解析它:

readonly ReturnToWorkController returnToWorkController;

public SicknessSteps(TestContext testContext)
{
        returnToWorkController = ApplicationContext.Resolve<ReturnToWorkController>();
}

然后调用我想测试的方法:

returnToWorkController.Approval("x");

我正在使用NSubstitute来模拟我的存储库:

var staffRepository = Substitute.For<IStaffRepository>();
            staffRepository.GetByStaffId(currentUserStaffId)
                .Returns(ListStaff.Where(x => x.StaffId == currentUserStaffId));

我的问题是,我怎么能(或者甚至可能)在控制器中模拟注入的对象?这会在我的IoC设置中完成吗?

0 个答案:

没有答案