or
And this is the Mock:public
class
BatchManager
{
public
IStorageInventoryService StorageInventoryService {
get
;
set
; }
protected
virtual
void
AddOrUpdateLoadCarrierRequest(LoadCarrierRequest loadCarrierRequest)
{
List<DestinationStatus> destinationStatuses = StorageInventoryService.GetDestinationStatus(
new
List<
string
> { loadCarrierRequest.DestinationAddress });
AddOrUpdateDestinationDictionary(destinationStatuses, loadCarrierRequest);
AddOrUpdateBatchDictionary(loadCarrierRequest);
AddOrUpdateLoadCarrierRequestDictionary(loadCarrierRequest);
ExecuteNextTransport(destinationStatuses.Select(d => d.Address).ToList());
}
}
I am getting a null, instead of a List initialized..My test:public
class
MockBatchManager : BatchManager
{
public
new
void
AddOrUpdateLoadCarrierRequest(LoadCarrierRequest loadCarrierRequest)
{
base
.AddOrUpdateLoadCarrierRequest(loadCarrierRequest);
}
}
if I take a look on the line:[TestMethod]
public
void
AddOrUpdateLoadCarrierRequestAddsAnElementToEveryDictionary()
{
//Arrenge
MockBatchManager mockBatchManager =
new
MockBatchManager
{
StorageInventoryService = Mock.Create<StorageInventoryService>()
};
//
Mock.Arrange(() => mockBatchManager.ExecuteNextTransport(Arg.IsAny<List<
string
>>())).DoNothing();
Mock.Arrange(() => mockBatchManager.StorageInventoryService.GetDestinationStatus(Arg.IsAny<List<
string
>>()))
.ReturnsCollection(
new
List<DestinationStatus>());
//Act
mockBatchManager.AddOrUpdateLoadCarrierRequest(loadCarrierRequest);
//Assert
Assert.IsTrue(mockBatchManager.DestinationDic.Count == 1);
Assert.IsTrue(mockBatchManager.LoadCarrierRequestsDic.Count == 1);
Assert.IsTrue(mockBatchManager.ConcurrentDestinationStatuses.Count == 1);
Assert.IsTrue(mockBatchManager.BatchDic.Count == 1);
}
List<DestinationStatus> destinationStatuses = StorageInventoryService.GetDestinationStatus(
new
List<
string
> { loadCarrierRequest.DestinationAddress });
public
partial
class
Manager
{
protected
static
class
DataAccess
{
public
static
void
CallMyStoredProcedure()
{ }
}
}
private
static
LogonController CreateLogonController()
{
var controller =
new
LogonController();
var response = Mock.Create<HttpResponseBase>();
var httpContext = Mock.Create<HttpContextBase>();
var routeData =
new
RouteData();
var request = Mock.Create<HttpRequestBase>();
var cookies =
new
HttpCookieCollection();
var context =
new
ControllerContext(httpContext, routeData, Mock.Create<ControllerBase>());
var browser = Mock.Create<HttpBrowserCapabilitiesBase>();
response.Output =
new
StringWriter();
Mock.Arrange(() => browser.IsMobileDevice).Returns(
false
);
Mock.Arrange(() => request.Cookies).Returns(cookies);
Mock.Arrange(() => request.ValidateInput());
Mock.Arrange(() => request.UserAgent).Returns(
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
);
Mock.Arrange(() => request.Browser).Returns(browser);
Mock.Arrange(() => response.Cookies).Returns(cookies);
Mock.Arrange(() => httpContext.Request).Returns(request);
Mock.Arrange(() => httpContext.Response).Returns(response);
routeData.Values.Add(
"controller"
,
"LogonController"
);
routeData.Values.Add(
"action"
,
"Index"
);
controller.ControllerContext = context;
return
controller;
}
public
static
class
ApiExtensionMethods
{
public
static
string
Render(
this
ViewResult result, Controller controller)
{
controller.ViewData.Model = result.Model;
try
{
using
(var sw =
new
StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, result.ViewName);
var context =
new
ViewContext(controller.ControllerContext, viewResult.View, result.ViewData, result.TempData, sw);
viewResult.View.Render(context, sw);
return
sw.GetStringBuilder().ToString();
}
}
catch
(Exception e)
{
return
e.ToString();
}
}
}
internal
class
MyClass
{
private
MyClass()
{
}
private
void
PrivatelyDoWork(
string
stringValue)
{
}
public
static
Action<
object
> HowMyClassWorks()
{
return
(myString) =>
new
MyClass().PrivatelyDoWork((
string
)myString);
}
}
class MyClass { public static int SomeStatic { get; private set;} static MyClass() { SomeStatic = 15; } } [Test] public void foo() { using (Mock.SetupStatic(typeof(MyClass), Behavior.Strict, StaticConstructor.Mocked)); { Mock.Arrange(() => MyClass.SomeStatic).Returns(5); Assert.AreEqual(5, MyClass.SomeStatic); } Assert.AreEqual(15, MyClass.SomeStatic); }
public
void
LoadConfiguartionSettingsTest()
{
// Arrange
var inst = PrivateAccessor.ForType(
typeof
(Configuration));
var xdoc = (XDocument)inst.CallMethod(
"InitializeFile"
);
// Act
inst.CallMethod(
"LoadConfiguartionSettings"
,
new
object
[] { xdoc });
var resp = inst.GetProperty(
"AppSettings"
); // This fails... I guess because it is a public property.
// Assert
Assert.IsNotNull(resp);
Assert.IsInstanceOfType(resp,
typeof
(List<AppSetting>));
}
locksViewModel.Query = Mock.Create<DataServiceQuery<EntityLock>>();
public
LocksViewModel(IEnumerable<LoadCarrier> selectedLoadCarriers, ILoadCarrierRepository loadCarrierRepository)
{
if
(selectedLoadCarriers !=
null
&& loadCarrierRepository !=
null
)
{
DataContext = loadCarrierRepository.DataModelServiceContext;
Query = (DataServiceQuery<EntityLock>)loadCarrierRepository.GetEntityLocks(selectedLoadCarriers.Select(x=>x.Id));
And I am getting this exception: Initialization method Tgw.Wcs.Windows.U.Test.ComponentTests.Modules.LoadCarriers.LocksViewModelTest .TestInitialize threw exception. System.InvalidCastException: System.InvalidCastException: Unable to cast object of type 'Castle.Proxies.IQueryable`1Proxy' to type 'System.Data.Services.Client.DataServiceQuery`1[Tgw.Wcs.Windows.Data.UIModel.EntityLock]'..IQueryable<EntityLock> entityLocks = Mock.Create<IQueryable<EntityLock>>();
LoadCarrierRepository loadCarrierRepository = Mock.Create<LoadCarrierRepository>();
loadCarrierRepository.DataContext = Mock.Create<ClientDataModelServiceContext>();
Mock.Arrange(() => loadCarrierRepository.GetEntityLocks(Arg.IsAny<IEnumerable<Guid>>())).ReturnsCollection(entityLocks);
Mock.Arrange(() => loadCarrierRepository.GetLockReasons()).ReturnsCollection(
new
List<
string
> {
"fooLockReason1"
,
"fooLockReason2"
});
locksViewModel =
new
LocksViewModel(
new
ObservableCollectionEx<LoadCarrier>() { loadCarrier }, loadCarrierRepository);
[TestInitialize]
public
void
Initialize()
{
loadCarrierManager =
new
LoadCarrierManager();
loadCarrier =
new
LoadCarrier { Name =
"LC1"
};
//Creates a number of elements
loadCarriers = CreateLoadCarriers(numberOfLoadcarriers);
//First Mock the SIS Context
storageAndInventoryContext = Mock.Create<StorageAndInventoryContext>(() =>
new
StorageAndInventoryContext(
"Non"
),
Behavior.CallOriginal);
//Mock the GetContext so it will return out Mocked element
Mock.Arrange(() => StorageAndInventoryContextProvider.GetContext())
.Returns(storageAndInventoryContext);
Mock.Arrange(() => storageAndInventoryContext.InventoryAccountSet.OfType<LoadCarrier>())
.ReturnsCollection(loadCarriers);
}
[TestMethod]
[TestCategory(TgwTestingCategories.ServiceTest)]
[WorkItem(11126)]
public
void
UpdateLoadCarrierLocksLoadCarrier()
{
Parallel.For((
long
)0, 3, i =>
{
using
(var scope =
new
UnitOfWorkScope())
{
for
(
int
lcCount = numberOfLoadcarriers-1; lcCount > 0; lcCount--)
{
string
lcName =
string
.Format(
"LC{0}"
, lcCount);
LoadCarrierChangeSet loadCarrierChangeSet =
new
LoadCarrierChangeSet();
var lcToUpdate = loadCarrierManager.GetLoadCarrierData(lcName);
loadCarrierChangeSet.Locks =
new
LockChangeSet(
"fooReason"
,
"fooDescription"
);
loadCarrierManager.UpdateLoadCarrier(lcToUpdate.Name, loadCarrierChangeSet);
}
scope.Complete();
}
});
using
(
new
UnitOfWorkScope())
{
var badEntityLocksDescriptions =
storageAndInventoryContext.InventoryAccountSet.OfType<LoadCarrier>()
.Select(x => x.EntityLocks.Where(y=>y.Description ==
"fooReason"
));
Assert.AreEqual(100, badEntityLocksDescriptions.Count());
}
}