enter code here
У меня есть следующий метод, когда мне нужно написать единичный тестовый пример, чтобы проверить этот метод.Помощь Rhino Mocks
public void ProcessDormantApplications()
{
List<long> dormantApplicationIDs = new List<long>();
dormantApplicationIDs = service.GetDormantApplications();
if (dormantApplicationIDs.Count > 0)
{
foreach (long dormantID in dormantApplicationIDs)
{
string msg = service.UpdateDormantApplications(dormantID);
}
}
}
}
и это метод TEST, который я написал.
[TestClass]
public class DormantApplicationsTest
{
ILogger logger;
IService Service;
[TestInitialize]
public void SetUp()
{
logger = MockRepository.GenerateStub<ILogger>();
Service = MockRepository.GenerateStub<IService>();
}
[TestMethod]
public void TESTProcessDormantApplications()
{
////arrange
////act
var target = new BLogic(service, logger);
target.ProcessDormantApplications();
////assert
// service.AssertWasCalled(x => x.
}
}
Фактический метод вызывает другой служебный уровень, который inturn вызывает веб-службу для получения данных. В этом случае я не уверен, что до ASSERT
в этой ситуации.
[TestMethod]
public void CheckProcessDormantApplications_InBetweenApplicationFailedToUpdate()
{
////arrange
var applicationIds = new List<long>()
{
1,2,3
};
UpdateResponse.isSuccess = true;
UpdateResponse.errorMessage = string.Empty;
Service.Stub(x => x.GetDormantApplications()).Return(applicationIds);
for(int i=0; i <= applicationIds.Count-1; i++)
{
if (i == 1) //set this application id response to FALSE so it should continnue with next record as well
{
UpdateResponse.isSuccess = false;
UpdateResponse.errorMessage = "making it fail for test";
}
Service.Stub(x =>x.UpdateDormantApplications(applicationIds[i])).Return(UpdateResponse);
}
////act
var target = new BLogic(Service, logger);
target.ProcessDormantApplications();
////assert
foreach (long id in applicationIds)
{
Service.AssertWasCalled(x => x.UpdateDormantApplications(id));
}
}
}
так, вы имеете в виду мы насмехаясь, что Метод GetDormantApplciations() должен возвращать, а затем вызывать updateormantappliations для каждого идентификатора? если да, то как мы собираемся протестировать метод getdormantappliation, который на самом деле должен вернуть список идентификаторов? – user3264937
@ user3264937 вы этого не делаете, это 'UT', вы должны проверить только поведение тестируемого устройства (' ProcessDormantApplications'). В другом '' вы должны проверить поведение 'GetDormantApplications' ... –
Спасибо за ясность; один вопрос, однако, не мы выполняем [вызывающий реальный метод] updateormantqapplications, когда говорим DormantServiceAdapter.AssertWasCalled (x => x.UpdateDormantApplications (id))? – user3264937