or
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
; }
}
}
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
}
}
}
public class Bi
{
protected bool Equals(Bi other)
{
return I == other.I;
}
public override int GetHashCode()
{
return I;
}
public override bool Equals(object obj)
{
return base.Equals(obj);
}
public int I { get; set; }
}
public interface IR
{
bool Get(Bi bi);
}
public class G
{
private readonly IR _r;
public G(IR r)
{
_r = r;
}
public bool M()
{
var bi = new Bi {I = 1};
return _r.Get(bi);
}
}
[TestFixture]
public class Test
{
[Test]
public void Test1()
{
var bi = new Bi {I = 1};
var r = Mock.Create<
IR
>();
Mock.Arrange(() => r.Get(bi)).Returns(true);
var g = new G(r);
var b = g.M();
Assert.That(b, Is.True);
}
}
var oRegMgr = Mock.Create<
IRegionManager
>();
var oCmdRegion = Mock.Create<
IRegion
>();
var oCmdView = Mock.Create<
CommandingView
>(Constructor.Mocked);
Mock.Arrange(() => oRegMgr.Regions[RegionNames.CommandingRegion]).Returns(oCmdRegion);
Mock.Arrange(() => oCmdRegion.ActiveViews.FirstOrDefault()).Returns(oCmdView);
IRegion commandingRegion = oRegionManager.Regions[RegionNames.CommandingRegion];
CommandingView oCmdView = (CommandingView)commandingRegion.ActiveViews.FirstOrDefault();
var oCmdView = Mock.Create<CommandingView>();
Hi, I'm trying to unit test a common interface used in a generic Repository, something like T GetWhere(Func<T, Boolean> where)...
When I set this expectation in a test
Mock.Arrange(() => bookRepo.GetWhere(book => book.Id == 1))
.Returns(expectedBook)
.MustBeCalled();
JustMock throws this exception: "Telerik.JustMock.MockAssertionException: Setup contains calls that are marked as "MustBeCalled" but actually never called"
It seems the GetWhere() method was never call, to return the expected object.
Below is a simple example that illustrate the case.
How should I rewrite the second test below so that I can mock and test these type of interfaces?
Thanks in advance.
using
System;
using
Microsoft.VisualStudio.TestTools.UnitTesting;
using
Telerik.JustMock;
//Free version 2011.1.331.1
using
Model.Infrastructure;
using
Model;
namespace
Model.Infrastructure
{
public
interface
IRepository<T> where T :
class
{
T GetById(
int
Id);
T GetWhere(Func<T, Boolean> where);
}
}
namespace
Model
{
public
class
Book
{
public
int
Id {
get
;
set
; }
public
string
BookTitle {
get
;
set
; }
public
string
OnLoanTo {
get
;
set
; }
public
Book(){}
}
public
class
BookService
{
private
IRepository<Book> _bookRepository;
public
BookService(IRepository<Book> bookRepository)
{
this
._bookRepository = bookRepository;
}
public
Book GetSingleBook1(
int
bookId)
{
return
_bookRepository.GetById(bookId);;
}
public
Book GetSingleBook2(
int
bookId)
{
Book b = _bookRepository.GetWhere(x => x.Id == bookId);
return
b;
}
}
}
namespace
Model.Tests
{
[TestClass]
public
class
AssortedTests
{
private
Book expectedBook;
private
IRepository<Book> bookRepo;
private
BookService bookService;
[TestInitialize]
public
void
Setup()
{
expectedBook =
new
Book()
{ Id = 1,
BookTitle =
"Adventures"
,
OnLoanTo =
"John Smith"
};
bookRepo = Mock.Create<IRepository<Book>>();
bookService =
new
BookService(bookRepo);
}
[TestMethod]
public
void
Book_CanRetrieveBookFromRepository()
{
Mock.Arrange(() => bookRepo.GetById(1))
.Returns(expectedBook)
.MustBeCalled();
//Act
Book actualBook = bookService.GetSingleBook1(1);
Mock.Assert(bookRepo); //Pass...
Assert.IsTrue(actualBook.BookTitle ==
"Adventures"
);
}
[TestMethod]
public
void
Book_CanRetrieverFromRepositoryUsingLambdaExpressions()
{
Mock.Arrange(() => bookRepo.GetWhere(book => book.Id == 1))
.Returns(expectedBook)
.MustBeCalled();
//Act
Book actualBook = bookService.GetSingleBook2(1);
Mock.Assert(bookRepo);
//Throws the error...
Assert.IsTrue(actualBook.BookTitle ==
"Adventures"
);
}
}
}
Mock.SetupStatic(typeof(FormsAuthentication));
Mock.Arrange(() => FormsAuthentication.SignOut()).OccursOnce();
var result = lc.Logoff();
Mock.Assert(() => FormsAuthentication.SignOut());
Test Name: LogoffShouldCallFormsAuthenticationSignOut
Test FullName: OfDisplays.WebTests.SecurityTests.LogoffShouldCallFormsAuthenticationSignOut
Test Source: c:\SoftDev\Projects\OFDisplays\OfDisplays.Web\OfDisplays.WebTests\SecurityTests.cs : line 83
Test Outcome: Failed
Test Duration: 0:00:01.9634171
Result Message:
Test method OfDisplays.WebTests.SecurityTests.LogoffShouldCallFormsAuthenticationSignOut threw exception:
System.IO.FileNotFoundException: Could not load file or assembly 'Telerik.CodeWeaver.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=87210992829a189d' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
Result StackTrace:
at System.Web.Security.FormsAuthentication.SignOut()
at OfDisplays.Web.Controllers.LoginController.Logoff() in c:\SoftDev\Projects\OFDisplays\OfDisplays.Web\OfDisplays.Web\Controllers\LoginController.cs:line 57
at OfDisplays.WebTests.SecurityTests.LogoffShouldCallFormsAuthenticationSignOut() in c:\SoftDev\Projects\OFDisplays\OfDisplays.Web\OfDisplays.WebTests\SecurityTests.cs:line 90
public partial class portailSOAPClient : System.ServiceModel.ClientBase<FiduPortail.portailSOAP>, FiduPortail.portailSOAP {}Do you know how to resolve this issue.