Я новичок в написании модульного теста в визуальной студии. В моем веб-приложении у меня есть следующее содержание.Единичный тест для метода «Задача» с инъекцией зависимостей
1> Интерфейс
public interface IGettProxy
{
Task<List<CityDetails>> getCity();
Task<List<CountryDetails>> getCountry(int cityId);
}
2> Контракты (реализация интерфейса)
public async Task<List<CityDetails>> getCity()
{
try
{
_serviceUrl = String.Format("{0}/Search/getCityinfo", _serviceUrl);
string requestUri = _serviceUrl;
client = new HttpClient();
var response = await client.GetAsync(requestUri);
if (response.IsSuccessStatusCode)
{
string json = await response.Content.ReadAsStringAsync();
var Result = new JavaScriptSerializer().Deserialize<List<CityDetails>>(json);
return Result;
}
else
{
throw new Exception("Errorhandling message");
}
}
catch (Exception ex) { throw ex; }
}
public async Task<List<CountryDetails>> getCountry(int cityId)
{
try
{
_serviceUrl = String.Format("{0}/Search/getcountryinfo?cityId={1}", _serviceUrl, cityId);
string requestUri = _serviceUrl;
client = new HttpClient();
var response = await client.GetAsync(requestUri);
if (response.IsSuccessStatusCode)
{
string json = await response.Content.ReadAsStringAsync();
var Result = new JavaScriptSerializer().Deserialize<List<CountryDetails>>(json);
return Result;
}
else
{
throw new Exception("Errorhandling message");
}
}
catch (Exception ex) { throw ex; }
}
3> Контроллер
private IGettProxy igettProxy;
public GettController(IGettProxy gettProxy)
{
igettProxy = gettProxy;
}
/// <summary>
/// Invoked on Page Load
/// </summary>
/// <returns></returns>
public async Task<ActionResult> Getdet()
{
try
{
List<CityDetails> cityDetails = await igettProxy.getCity();
SearchModel viewModel = new SearchModel();
viewModel.cityDetail = cityDetails;
return View(viewModel);
}
catch (Exception ex) { throw ex; }
}
/// <summary>
/// Get Country list based on city information
/// </summary>
/// <param name="cityId"></param>
/// <returns></returns>
public async Task<JsonResult> getCountry (int cityId)
{
try
{
List<CountryDetails> CountryDetails = await iSearchProxy.getCountry(cityId);
return Json(CountryDetails,JsonRequestBehavior.AllowGet);
}
catch (Exception ex) { throw ex; }
}
У меня разные библиотеки классов для элемента данных.
Для конфигурации впрыска я использую метод Unity.
Итак, в этом представлении у меня есть возможность привязать город, значения страны.
Для этого связующего я хочу написать модульный тест. Пожалуйста, помогите мне с этой деталью. Заранее спасибо.
Мой метод испытаний
[TestMethod]
public void bookAppointment()
{
List<CityDetails> cityDetails = new List<CityDetails>();
cityDetails.Add(new CityDetails {ID=1,CityName="Delhi"});
// var mockproxy = new StubISearchProxy();
StubISearchProxy searchProxy = new StubISearchProxy();
searchProxy.GetCity =() => cityDetails;
SearchController searchController = new SearchController(searchProxy);
var str = searchController.getCity();
}
Что именно вы хотите выполнить модульный тест в своем коде? Что вы не знаете или где проблема? Также соблюдайте соглашение об именах .net для имен методов, которое является PascalCase. –
Привет @SriramSakthivel, Спасибо за ваш взгляд в моем вопросе. Я обновил свою тестовую функцию. Я действительно поражен этим. Я не знаю, что мне нужно сделать, чтобы скрыть привязку. А также использование Задачи в реализации. –
Идея MVC заключается в том, что вы не тестируете пользовательский интерфейс. Вы проверяете бизнес-логику в контроллере и других сервисах, которые используете. Также в вашем методе тестирования не хватает утверждения. Подтвердите, что должно быть истинным/ложным. Мне непонятно, чего вы не знаете. Простите за это. –