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")
) で機能しましたが、アクションでは機能しませんでしたnew RestExecution().Get
。このような呼び出しを単体テストするにはどうすればよいですか?
よろしくお願いします。
編集: @rich.okelly コメントに関するコードを変更しました。
編集:インターフェースのコードを追加