Ich bin neu in Moq, und ich möchte Komponententests damit schreiben. Ich habe eine Datenbank mit ein paar Tischen, wie:C#/Moq - Wie wird mit mehrstufigen Testdaten gefüllt?
EducationUser | Application
- UsrName - Student
- UsrPwd - CourseId
- UsrChallenge - Date
- IsTeacher - Grade
- FullName
Dies ist eine Datenbank auf einem localdb
, die ich verspotten wollen. Ich habe die Entitäten mit dem Entity Framework erstellt. Die Schnittstelle dieser Entitäten ist IEducationEntities
.
Nun würde Ich mag ein Mock-Objekt erstellen und einige Tests von einigen Web-Services zu tun, wie:
[TestMethod()]
public void LoginTest()
{
HttpResponseMessage response = Request.CreateResponse(_accountController.Login("andrew", "DefaultPassword"));
Assert.IsTrue(response.IsSuccessStatusCode, "User unable to log in with correct login info");
}
Hierzu aus dem, was ich aus dem documentation verstanden habe, sollte ich in der Lage sein, so etwas wie:
[TestClass()]
public class AccountControllerTests : ApiController
{
Mock<IEducationEntities> _entities = new Mock<IEducationEntities>(MockBehavior.Strict);
private AccountController _accountController;
public AccountControllerTests() {
_accountController = new AccountController(_entities.Object);
_entities.Setup(table => table.EducationUsers.UsrName).Returns("andrew");
_entities.Setup(table => table.EducationUsers.UsrPwd).Returns("DefaultPassword");
}
[TestMethod] //etc, defining tests below
dies ist jedoch überhaupt nicht funktioniert, da die Einheiten aus dem databse erzeugt keine Informationen über Subfeldern enthalten offenbar, und ich erhalte die Fehlermeldung:
'DbSet' does not contain a definition for 'UsrPwd' and no extension method 'UsrPwd' accepting a first argument of type 'DbSet' could be found (are you missing a using directive or an assembly reference?)
Was fehlt mir? Wie fülle ich ein moq
Objekt mit Testdaten, die die gleiche Struktur wie meine Datenbank haben?
In Ihrer Beispiel Tabellenstruktur wird das Passwort-Feld 'UsrPassword' genannt, aber Sie nennen es' UsrPwd' in Ihrem Test/Mock-Code. –