Help me to complete the test methods for below code
I have one method OrderProducts in Shop class which place the order or request new stock when products are not there.
Can you help me mock the local call and external call.
There is method OrderProducts and against each line of the code I provided the comments what I want to mock in the Testmethods.
Copy paste the below code in one .cs file of JustMockTest project
Here are the tried test method. You can paste it another .cs file
I have one method OrderProducts in Shop class which place the order or request new stock when products are not there.
Can you help me mock the local call and external call.
There is method OrderProducts and against each line of the code I provided the comments what I want to mock in the Testmethods.
Copy paste the below code in one .cs file of JustMockTest project
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Collections.ObjectModel;
using
System.ServiceModel;
using
System.ServiceModel.Channels;
namespace
Business
{
public
class
Shop
{
public
Shop() { }
public
void
OrderProducts()
{
LogInfo log =
new
LogInfo();
//From the test method should be able to skip this constructor assume there is big amount of the dependent code in the constructor
CategoryType cat =
new
CategoryType();
cat.Level = 2;
//From the test method should be able to set cat.Level equal to 10
var categories = CategoryHelper.GetCategories(cat);
//want pass cat level 3 and return any three item
this
.CategoriesList = categories;
bool
retval =
true
;
//From the test method should be able to set retval equal to false
IProductService productProxy = WCFServicesInstance.GetWCFServiceInstance<IProductService>();
List<Product> productlist = productProxy.ProductsByCategories(log, CategoriesList);
if
(productlist.Count>0)
{
int
orderID=PlacetheOrder(productlist);
//From the test method should be able to call another method like DoInstead
}
else
{
RequestNewStock(productlist);
//From the test method should be able to call another method like DoInstead
}
OnClose();
//From the test method should be able to ignore the call
}
private
int
PlacetheOrder(List<Product> productlist)
{
throw
new
NotImplementedException();
}
private
void
RequestNewStock(List<Product> productlist)
{
throw
new
NotImplementedException();
}
private
void
OnClose()
{
throw
new
NotImplementedException();
}
private
List<Category> categoriesList;
public
List<Category> CategoriesList
{
get
{
return
categoriesList;}
set
{ categoriesList = value;}
}
}
public
class
Product
{
}
public
class
LogInfo
{
}
public
class
Category
{
private
string
name;
public
string
Name
{
get
{
return
name;}
set
{ name = value;}
}
}
public
class
CategoryType
{
private
int
level;
public
int
Level
{
get
{
return
level; }
set
{ level = value; }
}
}
public
class
CategoryHelper
{
public
static
List<Category> GetCategories(CategoryType cat)
{
throw
new
NotImplementedException();
//This making external call
}
}
public
interface
IProductService : IDisposable
{
List<Product> ProductsByCategories(LogInfo log,List<Category> CategoriesList);
}
public
class
WCFServicesInstance
{
public
WCFServicesInstance() { }
public
static
T GetWCFServiceInstance<T>() where T :
class
, IDisposable
{
T retVal;
retVal = GetProxyInstance<T>().ProxyContract;
return
retVal;
}
public
static
WCFServiceProxy<T> GetProxyInstance<T>() where T :
class
{
WCFServiceProxy<T> wcfProxy =
null
;
#region There is external call that gives the instance
//External dlll that gives instance of WCFServiceProxy<T>
#endregion
return
wcfProxy;
}
}
public
class
WCFServiceProxy<T> : ClientBase<T> where T :
class
{
public
WCFServiceProxy() {}
public
T ProxyContract {
get
;
set
; }
}
}
Here are the tried test method. You can paste it another .cs file
using
System;
using
System.Text;
using
System.Collections.Generic;
using
System.Linq;
using
Microsoft.VisualStudio.TestTools.UnitTesting;
using
Business;
using
Telerik.JustMock;
namespace
JustMockTestProject
{
[TestClass]
public
class
ShopTest
{
[TestMethod]
public
void
OrderProductsPlaceOrderTest()
{
#region Arrange
var loginfo = Mock.Create<v>();
CategoryType cat =
new
CategoryType();
cat.Level = 3;
// Mock.Arrange(() => CategoryHelper.GetCategories(cat)).Returns(cat);
#endregion
#region Act
Shop target =
new
Shop();
target.OrderProducts();
#endregion
#region Assert
//Assert that Order is place i.e PlacetheOrder is called(mock version)
#endregion
}
[TestMethod]
public
void
OrderProductsRequestNewStockTest()
{
#region Arrange
#endregion
#region Act
Shop target =
new
Shop();
target.OrderProducts();
#endregion
#region Assert
//Assert that Product are Requested for the new stock i.e RequestNewStock is called (mock version)
#endregion
}
}
}