or
public void SaveChanges()
{
try
{
//some code here
}
catch (MyException dbEValEx)
{
RaiseValidationError(dbEValEx);
}
catch (MySecondException dbUpdateException)
{
RaiseUpdateException(dbUpdateException);
}
}
Any ideas of how to do it?//Class to be tested
var fooUnitOfWork = Mock.Create<
UnitOfWork
>(Behavior.CallOriginal);
//Mock private method
Mock.NonPublic.Arrange(fooUnitOfWork, "RaiseValidationError", dbEntityValidationException).DoNothing().MustBeCalled();
//Execute method to test
fooUnitOfWork.SaveChanges();Mock.Arrange(() => fooUnitOfWork.SaveChanges()).Throws(new DbEntityValidationException());
//Make sure that the RaiseDBValidationError is called
Mock.Assert(fooUnitOfWork);
I am implementing the test like this:public static class UnitOfWorkExtensions
{
public static void SetSubCategory(this IOperationTracer tracer, string subCategory)
{
UnitOfWork unitOfWork = UnitOfWork.Current;
if (unitOfWork != null && unitOfWork.CorrelationId != null)
{
tracer.SetSubCategory(UnitOfWork.Current.CorrelationId, subCategory);
}
}
}
The test is failing and I don't have a clue why[TestMethod]
public void SetSubCategoryTest()
{
Mock.SetupStatic(typeof(UnitOfWorkExtensions));
IOperationTracer operationTracer = Mock.Create<
OperationTracer
>();
Mock.Arrange(() => operationTracer.SetSubCategory(null, "subCategory")).DoNothing().OccursNever();
UnitOfWorkExtensions.SetSubCategory(operationTracer, "subCategory");
Mock.Assert(operationTracer);
UnitOfWork.Current = new UnitOfWork();
UnitOfWork.Current.CorrelationId = "11111";
Mock.Arrange(() => operationTracer.SetSubCategory(null, "subCategory")).DoNothing().OccursOnce();
UnitOfWorkExtensions.SetSubCategory(operationTracer, "subCategory");
Mock.Assert(operationTracer);
}
var entitiesMock = Mock.Create<Entities>();
UserAccount userAccount =
new
UserAccount()
{
Username =
"UserName"
,
Password =
"Password"
};
// Arrange
List<UserAccount> userAccounts =
new
List<UserAccount>();
Mock.Arrange(() => entitiesMock.AddToUserAccounts(Arg.IsAny<UserAccount>())).DoInstead(()=>userAccounts.Add(userAccount));
// Act
entitiesMock.AddToUserAccounts(userAccount);
// Assert
Assert.AreEqual(1, userAccounts.Count);
Assert.AreSame(userAccount, userAccounts[0]);
Authentication authentication =
new
Authentication(entitiesMock);
UserAccount authenticatedUserAccount=authentication.Authenticate(userAccount.Username, userAccount.Password, Authentication.PasswordFormat.PlainText);
Assert.AreEqual(userAccount.Username, authenticatedUserAccount.Username);
Mock.Arrange(() => myService.Foo(Arg.AnyGuid))
.DoInstead(
new
System.Action<System.Guid>(Console.WriteLine));
Mock.Assert(() => myService.Foo(Arg.AnyGuid), Occurs.Once());
myService.Foo(Arg.Matches<Guid>(g => g != Guid.Empty))
Line 10: Mock.SetupStatic(
typeof
(XY));
Line 11: Mock.Arrange(() => XY.XY()).Returns(
"xy"
);
at Telerik.JustMock.Handlers.InterceptorHandler.Create(Object target, MethodInfo methodInfo, Boolean privateMethod)
at Telerik.JustMock.MockContext`1.SetupMock(MockExpression`1 expression)
at Telerik.JustMock.MockContext`1.SetupMock(Expression`1 expression)
at Telerik.JustMock.Mock.<>c__DisplayClass1`1.<Arrange>b__0(MockContext`1 x)
at Telerik.JustMock.MockContext.Setup(Instruction instruction, Func`2 function)
at Telerik.JustMock.Mock.Arrange(Expression`1 expression)
at XY()
in
XY.cs: line 11
class Program
{
static void Main()
{
var results = new Program().CheckForY2K();
Console.WriteLine(results);
Console.Read();
}
internal bool CheckForY2K()
{
return DateTime.Now == new DateTime(2000, 1, 1);
}
}
[TestFixture]
public class NuintTest
{
static NuintTest()
{
Mock.Replace(() => DateTime.Now).In<
Program
>(x => x.CheckForY2K());
}
[Test]
public void TestY2K()
{
Mock.Arrange(() => DateTime.Now).Returns(new DateTime(2000, 1, 1));
var results = new Program().CheckForY2K();
Assert.IsTrue(results);
}
}
class Program
{
static void Main()
{
var results = CheckForY2K();
Console.WriteLine(results);
Console.Read();
}
internal static bool CheckForY2K()
{
return DateTime.Now == new DateTime(2000, 1, 1);
}
}
Mock.Replace(() => DateTime.Now).In<
Program
>(x => x.CheckForY2K());