Похоже, что единственное, что вы делаете с вызовом Begin (), возвращает настроенный вами класс для этого конкретного интерфейса: IUnitOfWork
Вам просто нужно убедиться, что ваш вызов Begin () возвращает ложную реализацию IUnitOfWork
Один из двух способов сделать это:
Option One - Refactor UnitOfWorkSS
, так что вы можете установить экземпляр IUnitOfWork
, который будет возвращен
public static class UnitOfWorkSS
{
private static IUnitOfWork _unitOfWork;
public static IUnitOfWork UnitOfWork
{
set { _unitOfWork = value; }
private get{ _unitOfWork ?? (_unitOfWork = IoC.Resolve<IUnitOfWork>()); }
}
public static IUnitOfWork Begin()
{
return UnitOfWork;
}
}
[TestMethod]
public void DoStuff()
{
var mockUnitOfWork = new Mock<IUnitOfWork>();
UnitOfWorkSS.UnitOfWork = mockUnitOfWork.Object;
//Do some setup and verify
}
Вариант второй - Просто зарегистрируйте фиктивный экземпляр IUnitOfWork
в своем контейнере IoC
private Mock<IUnitOfWork> _mockUnitOfWork;
[TestInitialize]
public void Init()
{
_mockUnitOfWork = new Mock<IUnitOfWork>();
//Making a lot of assumptions about your IoC here...
IoC.Register<IUnitOfWork>(_mockUnitOfWork.Object);
}
[TestMethod]
public void DoStuff()
{
_mockUnitOfWork.Setup( ... );
//Do some verification
}