1
我有两个类和一个接口。我想在我的测试中使用模拟。我想设置我的ReadBooklets()
方法。但我不知道我该怎么做。如何使用模拟设置List <string> ReadBooklets方法?
class FileHandler : IHandler
{
public List<string> ReadBooklets() // A booklets.txt-ben található mérési azonosítókat beolvassa egy string listába
{
List<string> booklets = new List<string>();
booklets = File.ReadAllLines("booklets.txt").ToList();
return booklets;
}
}
public class XMLHandler
{
FileHandler fileHandler = new FileHandler();
public IHandler handler;
public void RegisterHandler(IHandler handler)
{
this.handler = handler;
}
public void Creator() // Létrehozza a /bin/debug/booklets.txt-ben található mérési azonosítójú xml-eket
{
List<string> booklets = handler.ReadBooklets();
List<XDocument> outxdocs = new List<XDocument>();
XDocument foo;
Student foostudent;
for (int i = 0; i < booklets.Count; i++)
{
foostudent = new Student(booklets[i].Remove(9, 4));
foo = new XDocument(
new XElement("Diákok",
new XElement("Id", foostudent.Id),
new XElement("Pont", foostudent.Point)));
outxdocs.Add(foo);
outxdocs[i].Save(booklets[i]);
}
}
}
public interface IHandler
{
List<string> ReadBooklets();
}
这是我的测试项目,在那里我想设置我的handlerMock
,但我不能。
[TestFixture]
public class XMLHandlerTests
{
[Test]
public void XML_Should_Created_When_Called_Creator()
{
// Arrange
XMLHandler xmlHandler = new XMLHandler();
Mock<IHandler> handlerMock = new Mock<IHandler>();
handlerMock.Setup(x => x.ReadBooklets()).Returns();
xmlHandler.RegisterHandler(handlerMock.Object);
FileInfo firstStudentId = new FileInfo("A111-T143.xml");
FileInfo lastStudentId = new FileInfo("X973-B320.xml");
// Act
xmlHandler.Creator();
// Assert
FileAssert.Exists(firstStudentId, "Az első azonosító nem jött létre!");
FileAssert.Exists(lastStudentId, "Az utolsó azonosító nem jött létre!");
}
}