Я пытаюсь написать модульный тест для контроллера Api. Это приложение на C # mvc. И модульный тест также работает с Moq.
Это контроллер:
public sealed class CaseController : ApiControllerBase
{
[HttpGet]
[Route("{id:int}")]
public ICaseDto<object> Get(int id)
{
return _caseProcess.GetCase(id);
}
}
А это интерфейс:
public interface ICaseProcess
{
ICaseDto<object> GetCase(int id);
}
И это метод:
internal sealed class CaseProcess : ProcessBase, ICaseProcess
{
public ICaseDto<object> GetCase(int id)
{
var caseEntity = GetCaseById(id);
CaseProcessHelper helper = GetHelper(caseEntity);
object details = helper.GetReferenceDetails();
ICaseDto<object> resultDto = CaseDto.Create(details);
Mapper.Map(caseEntity, resultDto);
return resultDto;
}
}
И я пытаюсь написать модульный тест так:
[TestMethod]
public void CaseConroller_ReturnDetailData_Test()
{
//Arrange
var dto = new Case();
var mockService = new Mock<ICaseProcess>();
var Casecontroller = new CaseController(ICaseDto<Case>);
var expected = new CaseEditDto();
//var dataSource = new
CaseProcess.Setup(a => a.Should(dto))
//Act
// var result = "hallo";
//Assert
result.Should().BeEquivalentTo();
}
Так как именно вы должны написать модульный тест?
У меня есть подробное представление, а затем API должен вернуть данные подробного представления.
id - это int, например: api/support/cases/100000002
.
Конструктор выглядит так:
public CaseController(ICaseProcess caseProcess)
{
_caseProcess = caseProcess;
}
У меня теперь так:
//Arrange
var dto = new Case();
var mockService = new Mock<ICaseProcess>();
var casecontroller = new CaseController(CaseProcess.Object);
var expected = new CaseEditDto();
//Act
var result = casecontroller.Get(100000001);
//Assert
result.Should().BeEquivalentTo(expected);
Но вывод такой:
{
"details": {
"name": "Val van Urquhart",
"dateOfBirth": "11 september 1933"
},
"dateSubmittedFormatted": "1 januari 2018",
"dateClosedFormatted": null,
"sample": false,
"comments": [
{
"id": 1,
"account": "todo@local.nl",
"date": "08-11-2018 17:13",
"text": "ABC"
}
],
"id": 100000001,
"status": 103,
"substatus": null,
"verdict": null,
"owner": 101,
"dateSubmitted": "01-01-2018",
"dateClosed": null,
"type": 100,
"reference": "123459850"
}
Я пытаюсь так:
[TestMethod]
public void CaseController_GetCase_Test()
{
var CaseObject = new CaseDto<object>()
{
Id = 100000001,
Verdict = null,
DateSubmitted = "01-01-2018",
DateClosed = null,
Reference = "123459850"
};
var CaseTest = new CaseEditDto<object>();
// Case entity = UnitOfWork.GetRepository<Case>()
}