0
我想用NUnit和Rhino Mocks對以下函數進行單元測試。該函數使用給定的參數來創建一個RestSharp.RestRequest
並給請求dataAccessApi
:用NUnit測試一個動作
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評論的代碼。
編輯:添加的接口代碼
在斷言中傳遞的'RestExecution.Get'方法組是不同的(不參考相等)向所述一個在你的代碼中調用。 – 2012-02-15 12:39:08
謝謝!我改變了代碼,爲'restExecution'實現了另一個接口,希望這些方法能夠引用相同 - 它仍然不會通過測試。 – DIF 2012-02-15 12:51:03
「IDataAccessApi」接口是如何定義的,更具體地說是「請求」方法的簽名是什麼? –
2012-02-15 12:52:37