Я хотел бы протестировать следующую функцию с помощью NUnit и Rhino Mocks.Функция использует заданные параметры для создания RestSharp.RestRequest
и передачи запроса dataAccessApi
:
public void CopyToUserSession(string uri, string sourcePath)
{
RestRequest request = new RestRequest(uri, Method.POST);
request.AddParameter("source-path", sourcePath);
dataAccessApi.Request<object>(request, restExecution.Get);
}
Это класс тестирования:
public void CopyToUserSession_ValidUriAndParameter_CallDataAccessRequest()
{
// Arrange
var dataAccessApi = MockRepository.GenerateMock<IDataAccessApi>();
var restExecution = MockRepository.GenerateMock<IRestExecution>();
var sinkNodeResource = new SinkNodeResource(dataAccessApi, restExecution);
string uri = "http://SomeUri.com";
string sourcePath = "Some Source Path";
RestRequest request = new RestRequest(uri, Method.POST);
request.AddParameter("source-path", sourcePath);
// Act
sinkNodeResource.CopyToUserSession(uri, sourcePath);
// Assert
dataAccessApi.AssertWasCalled(x => x.Request<object>(request, restExecution.Get));
}
IDataAccessApi ...:
public interface IDataAccessApi
{
void Request<T>(RestRequest request, Action<T> callbackAction) where T : new();
}
... и IRestExecution:
public interface IRestExecution
{
void Get(object o);
void Put(object o);
void Post(object o);
void Delete(object o);
}
Тест работал с более простыми функциями для вызова (например, x.Test("Some String")
), но не с Action new RestExecution().Get
- как мне выполнить юнит-тестирование таких вызовов?
Заранее благодарю за помощь!
Редактировать: Изменен код в отношении комментария @ rich.okelly.
Редактировать: Добавлен код для интерфейсов