Теперь я начинаю использовать MongoDB в новом проекте. Я создал несколько тестов для класса с именем PersistanceManager<C>
. Этот класс является оберткой некоторых функций MongoDB. Сейчас это довольно просто, оно будет расширяться по мере необходимости.Выбор по атрибуту, не работающему в MongoDB
Проблема в том, что я застрял в неудачном тесте. Он выходит из строя с сообщением «Нет объекта, который был возвращен». Это испытание:
[Test, Description("Tests the selection of an object by an attribute.")]
public void ObjectFieldSelectionTest()
{
InstanceTest it = new InstanceTest(5898, "1234");
PersistanceManager<InstanceTest> pm = new PersistanceManager<InstanceTest>();
pm.Insert(it);
InstanceTest[] its = pm.GetInstanceByAttr(1, new KeyValuePair<string, BsonValue>("field", "1234"));
if (its.Length < 1)
{
pm.Delete(it);
Assert.Fail("No object was returned");
}
else
{
InstanceTest it2 = its[0];
pm.Delete(it);
Assert.AreEqual(it.Field, it2.Field);
}
}
Метод Я тестирую из PersistantManager<C>
это одна:
private MongoCollection<C> collection;
public PersistanceManager()
{
MongoDatabase db = new MongoClient("mongodb://localhost").GetServer().GetDatabase("db");
collection = db.GetCollection<C>(typeof(C).Name);
}
//This is the method
public C[] GetInstanceByAttr(int amount, KeyValuePair<string, BsonValue> kvp)
{
MongoCursor<C> cursor = collection.FindAs<C>(Query.EQ(kvp.Key, kvp.Value));
cursor.Limit = amount;
return cursor.ToArray<C>();
}
А класс InstanceTest
я использую для тестирования следующим образом (это определено в том же классе, тесты):
private class InstanceTest: IDBStorable
{
public BsonValue Id { get; set; }
public string Field { get; set; }
public InstanceTest() { }
public InstanceTest(int id, string field)
{
this.Id = id;
this.Field = field;
}
}
Все остальные тесты (выбрать по идентификатору, вставка, обновление, удаление, множественная вставка и т.д.) работы. Что мне не хватает?
Дело имеет значение. :) 'поле' в вашем запросе не' public string Field' – WiredPrairie
@WiredPrairie Действительно, спасибо. – eversor