2016-08-31 3 views
-1

Я младший разработчик, который является новым для модульного тестирования. Моя компания использует NUnit, и я пытаюсь проверить нулевую проверку в методе службы, который я создал. Любая идея, как должен выглядеть мой оператор Assert, если я пытаюсь проверить, string acctName = ""? По какой-то причине string acctName получает ошибку компилятора, указаннуюОшибка проверки нулевого значения с использованием NUnit

«Имя не существует в текущем контексте».

МОЙ МЕТОД:

public Dict getOrder(Client client) 
{ 
    string acctName = client != null ? client.AccountName : ""; 

    Dict replacements = new Replacement 
    { 
     {COMPANY_NAME, acctName} 
    }; 
    return new Dict(replacements); 
} 

МОЙ ТЕСТ:

public void getOrderNullTest() 
{ 

    //Arrange 

    Client myTestClient = null; 

    //Act 

    contentService.getOrder(myTestClient); 

    //Assert 

    Assert.AreEqual(string acctName, ""); 

} 
+0

Вы должны включать то, что ошибка компилятора. – hatchet

+0

Кроме того, что такое тип 'Client.AccountName'? Вы уверены, что это 'string', и что свойство определено классом? – hatchet

+0

Добавил ошибку и да, я уверен, что это строка типа благодаря visual studio;) –

ответ

0

В то время как вы е что вы ответили на свой вопрос и получили его на работу, знаете, что проблема заключалась в том, что при вызове assert у вас есть Assert.AreEqual(string acctName, ""), у которого есть синтаксическая ошибка, string acctName, которая предназначена для тех случаев, когда вы определяете метод, а не пытаетесь его вызвать.

Вот еще один способ, которым Вы могли бы написать это

//Arrange 
Client myTestClient = null; 
string expectedValue = String.Empty; 
string expectedKey = COMPANY_NAME; 

//Act 
Dict result = contentService.getOrder(myTestClient); 

//Assert 
Assert.IsNotNull(result); 

string actualValue = result[expectedKey]; 

Assert.IsNotNull(actualValue); 
Assert.AreEqual(expectedValue, actualValue); 
+0

Спасибо за ответ и объяснение @Nkosi, но почему ожидается. Ключ в скобках в строке 'actualValue = result [expectedKey];'? –

+0

Предполагалось, что Dict имеет тип Dictionary, который позволит индексировать вызов с помощью ключа, который возвращает значение, хранящееся на этом ключе. – Nkosi

+0

Я только что узнал что-то новое. :) Я думал, что индексный вызов должен был ссылаться на номер индекса, чтобы получить значение, например [0] или [1] –

1

Я закончил тем, что писал так:

//Arrange 

Client myTestClient = null; 
string expectedValue = String.Empty; 
string expectedKey = COMPANY_NAME; 

//Act 

Dict actual = contentService.getOrder(myTestClient); 

//Assert 

Assert.IsTrue(actual.ContainsKey(expectedKey)); 
Assert.IsTrue(actual.ContainsValue(expectedValue));