2013-08-12 3 views
0

Теперь я начинаю использовать 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; 
    } 
} 

Все остальные тесты (выбрать по идентификатору, вставка, обновление, удаление, множественная вставка и т.д.) работы. Что мне не хватает?

+2

Дело имеет значение. :) 'поле' в вашем запросе не' public string Field' – WiredPrairie

+0

@WiredPrairie Действительно, спасибо. – eversor

ответ

0

Получается, что, как сказал WiredPrairie, дело имеет значение. Какая глупая ошибка ...

Смежные вопросы