Вместо использования макета, возможно, в вашем случае лучше использовать Заглушка .
public class StubDataProvider : IDataProvider
{
public T GetDataDocument<T>(Guid document) where T : class, new()
{
return new T();
}
}
Если вам действительно нужен макет (так что вы можете проверить, что GetDataDocument
назывался).Вместо того, чтобы пытаться бороться со структурой Mocking, иногда проще просто создать класс Mock прямо.
public class MockDataProvider : IDataProvider
{
private readonly Action _action;
public MockDataProvider(Action action)
{
_action = action;
}
public T GetDataDocument<T>(Guid document) where T : class, new()
{
_action();
return new T();
}
}
И чем в вашем тесте:
bool wasCalled = false;
IDataProvider dataProvider = new MockDataProvider(() => { wasCalled = true; });
var aTable = dataProvider.GetDataDocument<ATable>(new Guid());
Debug.Assert(wasCalled);