Ho bisogno di scrivere dati su file in una delle mie classi.
Ovviamente passerò un'interfaccia nella mia classe per disaccoppiarla.
Stavo pensando che questa interfaccia verrà utilizzata per i test e anche in altri progetti.
Questa è la mia interfaccia:
//This could be used by filesystem, webservice
public interface ILogger
{
List<string> PreviousLogRecords {get;set;}
void Log(string Data);
}
public interface IFileLogger : ILogger
{
string FilePath;
bool ValidFileName;
}
public class MyClassUnderTest
{
public MyClassUnderTest(IFileLogger logger) {....}
}
[Test]
public void TestLogger()
{
var mock = new Mock<IFileLogger>();
mock.Setup(x => x.Log(Is.Any<string>).AddsDataToList()); //Is this possible??
var myClass = new MyClassUnderTest(mock.Object);
myClass.DoSomethingThatWillSplitThisAndLog3Times("1,2,3");
Assert.AreEqual(3,mock.PreviousLogRecords.Count);
}
Questo non funzionerà Non credo che nulla stia memorizzando gli articoli, quindi è possibile usando Moq e anche cosa ne pensi del design dell'interfaccia?