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: LogoffShouldCallFormsAuthenticationSignOutTest FullName: OfDisplays.WebTests.SecurityTests.LogoffShouldCallFormsAuthenticationSignOutTest Source: c:\SoftDev\Projects\OFDisplays\OfDisplays.Web\OfDisplays.WebTests\SecurityTests.cs : line 83Test Outcome: FailedTest Duration: 0:00:01.9634171Result 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.