#region Mocked Members
protected
HardCodedSiteOptionsEntity Target;
protected
IDependencyInjection InjectorMock;
protected
IMessageOperations MessageMock;
#endregion
[SetUp]
public
void
InitializeBase()
{
Target = Mock.Create<HardCodedSiteOptionsEntity>(Behavior.CallOriginal);
InjectorMock = Mock.Create<IDependencyInjection>();
MessageMock = Mock.Create<IMessageOperations>();
Target.Arrange(mockedObject => mockedObject.MessageOperationsHelper).Returns(MessageMock);
//Target.MessageOperationsHelper = MessageMock;
}
internal
class
HardCodedSiteOptionsEntity : ISiteOptions, IBlockEntityPartBuilder<
uint
>
{
#region Internal Properties
internal
virtual
BitArray StatusMaskData {
get
;
set
; }
internal
virtual
IDependencyInjection InjectorHelper {
get
;
set
; }
internal
virtual
IMessageOperations MessageOperationsHelper {
get
;
set
; }
#endregion
#region Constructor
internal
HardCodedSiteOptionsEntity()
{
InjectorHelper =
new
DependencyInjector();
MessageOperationsHelper = InjectorHelper.InjectEntity<IMessageOperations>();
StatusMaskData =
new
BitArray(32,
false
);
}
}
I have Visual Studio 2010 and Visual Studio 2012 installed. Using JustMock version 2012.3.1016.3
Running the tests below I get the following in both VS 2010 and 2012.
Test Name: TestReadXML
Test FullName: DemoSerializationExceptionMock.ReadXMLMockIBusinessPrincipal_Tests.TestReadXML
Test Source: C:\Projects\MAS Applications\Experimental\Source\DemoSerializationExceptionMock\DemoSerializationExceptionMock\ReadXMLMockIBusinessPrincipal_Tests.vb : line 47
Test Outcome: Failed
Test Duration: 0:00:00.00937
Result Message:
Test method DemoSerializationExceptionMock.ReadXMLMockIBusinessPrincipal_Tests.TestReadXML threw exception:
System.Runtime.Serialization.SerializationException: Type is not resolved for member 'IPrincipalProxy+bce4039c8c9143c29217f51daf99a9a8,Telerik.JustMock, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8b221631f7271365'.
Result StackTrace:
at System.AppDomain.get_Evidence()
at System.AppDomain.get_EvidenceNoDemand()
at System.AppDomain.get_Evidence()
at System.Configuration.ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName)
at System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath)
at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigurationHost.RequireCompleteInit(IInternalConfigRecord record)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Xml.XmlConfiguration.XmlReaderSection.get_ProhibitDefaultUrlResolver()
at System.Xml.XmlReaderSettings.GetXmlResolver_CheckConfig()
at System.Xml.Schema.XmlSchemaSet.PreprocessSchema(XmlSchema& schema, String targetNamespace)
at System.Xml.Schema.XmlSchemaSet.Add(String targetNamespace, XmlSchema schema)
at System.Xml.Schema.XmlSchemaSet.Add(XmlSchema schema)
at System.Xml.Schema.XmlSchemaInference.CreateXmlSchema(String targetNS)
at System.Xml.Schema.XmlSchemaInference.AddElement(String localName, String prefix, String childURI, XmlSchema parentSchema, XmlSchemaObjectCollection addLocation, Int32 positionWithinCollection)
at System.Xml.Schema.XmlSchemaInference.InferSchema1(XmlReader instanceDocument, XmlSchemaSet schemas)
at System.Xml.Schema.XmlSchemaInference.InferSchema(XmlReader instanceDocument)
at System.Data.DataSet.InferSchema(XmlDocument xdoc, String[] excludedNamespaces, XmlReadMode mode)
at System.Data.DataSet.ReadXml(XmlReader reader, Boolean denyResolving)
at System.Data.DataSet.ReadXml(TextReader reader)
at DemoSerializationExceptionMock.ReadXMLMockIBusinessPrincipal_Tests.TestReadXML() in C:\Projects\MAS Applications\Experimental\Source\DemoSerializationExceptionMock\DemoSerializationExceptionMock\ReadXMLMockIBusinessPrincipal_Tests.vb:line 43
Imports
Microsoft.VisualStudio.TestTools.UnitTesting.Web
Imports
Microsoft.VisualStudio.TestTools.UnitTesting
Imports
Telerik.JustMock
Imports
System.Security.Principal
<TestClass()> _
Public
Class
ReadXMLMockIBusinessPrincipal_Tests
Private
testContextInstance
As
TestContext
Public
Property
TestContext
As
TestContext
Get
Return
testContextInstance
End
Get
Set
(
ByVal
Value
As
TestContext)
testContextInstance = Value
End
Set
End
Property
<TestInitialize()>
Public
Sub
TestInit()
Dim
idnty
As
IIdentity = Mock.Create(Of IIdentity)()
Mock.Arrange(
Function
() idnty.AuthenticationType).Returns(
"MOCK"
)
Mock.Arrange(
Function
() idnty.IsAuthenticated).Returns(
True
)
Mock.Arrange(
Function
() idnty.Name).Returns(
"mockident"
)
Dim
prince
As
IPrincipal = Mock.Create(Of IPrincipal)()
Mock.Arrange(
Function
() prince.Identity).Returns(idnty)
Mock.Arrange(
Function
() prince.IsInRole(Arg.AnyString())).Returns(
True
)
System.Threading.Thread.CurrentPrincipal = prince
End
Sub
Dim
elem
As
XElement = <Root>
</Root>
<TestMethod()> _
Public
Sub
TestReadXML_IgnoreSchema()
Dim
ds
As
New
DataSet
ds.ReadXml(
New
IO.StringReader(elem.ToString), XmlReadMode.IgnoreSchema)
'<- Passed
End
Sub
<TestMethod()> _
Public
Sub
TestReadXML()
Dim
ds
As
New
DataSet
ds.ReadXml(
New
IO.StringReader(elem.ToString))
'<-Fails
End
Sub
End
Class
Mock.Arrange(() => Membership.Provider).Returns(fakeProvider);
public
ActionResult Login(AccountLogin accountLogin)
if
(!ModelState.IsValid)
{
return
View(accountLogin);
}
CustomMembershipProvider membershipProvider = Membership.Provider
as
CustomMembershipProvider;
MembershipUser user = membershipProvider.GetUser(accountLogin.UserName);
if
(user !=
null
&& user.LastLoginDate.AddDays(180) < DateTime.Now)
{
membershipProvider.LockUser(user.UserName);
ModelState.AddModelError(
""
, inactivityLockedMessage);
return
View(accountLogin);
}
if
(Membership.ValidateUser(accountLogin.UserName, AESCryptography.Encrypt(accountLogin.Password)))
{
// store single session ID
user.Comment = Guid.NewGuid().ToString();
Membership.UpdateUser(user);
public
void
Login_Where_ModelState_IsNot_Valid_test() //this unit test passes with no issue
{
var target =
new
AccountController();
var accountLogin =
new
AccountLogin();
var result =
new
ViewResult();
Mock.Arrange(() => target.Login(accountLogin)).OccursOnce();
//to make target.ModelState.IsValid return false
target.ModelState.AddModelError(
"key"
,
"needs to be false"
);
result = (ViewResult)target.Login(accountLogin);
Assert.IsTrue(target.ModelState.IsValid ==
false
);
Assert.IsTrue(result.ViewName ==
string
.Empty);
Mock.Assert(target.Login(accountLogin));
}
[TestMethod]
public
void
Login_Where_Inactivity_is_Hit_test()
{
string
inactivityLockedMessage =
"Your account is locked due to inactivity. Please contact AI Portal support."
;
//Arrange
controller = Mock.Create<AccountController>();
accountLogin =
new
AccountLogin { UserName =
""
} //string.empty;
action = Mock.Create<ActionResult>();
Mock.Arrange(() => controller.ModelState.IsValid).Returns(
true
);
CustomMembershipProvider fakeProvider = Mock.Create <CustomMembershipProvider>();
MembershipUser user = Mock.Create<MembershipUser>();
bool
called =
false
;
try
{
Mock.ArrangeSet(() => action = controller.Login(Arg.IsAny<AccountLogin>()))
.DoInstead(() =>
{
Mock.ArrangeSet(() => user.LastLoginDate.AddDays(180));
Mock.Arrange(() => user.LastLoginDate < DateTime.Now).Returns(
true
);
controller.ModelState.AddModelError(
""
, inactivityLockedMessage);
called =
true
;
})
.Returns(action);
}
catch
(NullReferenceException)
{
Mock.Arrange(() => fakeProvider.LockUser(accountLogin.UserName)).Returns(
true
);
Mock.ArrangeSet(() => user.LastLoginDate.AddDays(180));
Mock.Arrange(() => user.LastLoginDate < DateTime.Now).Returns(
true
);
controller.ModelState.AddModelError(
""
, inactivityLockedMessage);
called =
true
;
}
//Assert
Mock.Assert(user.LastLoginDate);
Mock.Assert(fakeProvider);
Assert.IsTrue(called);
Assert.IsFalse(controller.ModelState.IsValid);
Assert.IsTrue(controller.ModelState.Count==1,
"should not be more than 1 error"
);
string
modelerror = controller.ModelState[
""
].Errors[0].ErrorMessage;
Assert.IsTrue(inactivityLockedMessage==modelerror,
"should be equal"
);
}
I'm having trouble mocking File.WriteAllBytes. Here's my test code:
var called =
false
;
var ccr =
new
Ccr { Pdf =
new
byte
[73], SubmissionId = 3 };
Mock.Replace<
string
,
byte
[]>((s, b) => File.WriteAllBytes(s, b)).In<CcrFileWriter>(x => x.WriteToDisk(ccr));
Mock.Arrange(() => File.WriteAllBytes(
null
,
null
)).IgnoreArguments().DoInstead(()=> called =
true
);
var writer =
new
CcrFileWriter();
writer.WriteToDisk(ccr);
Assert.IsTrue(called);
It's not working. It's not bypassing File.WriteAllBytes and the test fails.
Maybe I'm not understanding how this should work?
IEnumerable<
byte
> passedMessage1 =
new
byte
[16];
Mock.Arrange(() => MessageOperationsMock.InsertNetworkAddressIntoMessage
(Target.PrimaryReportingAddress, passedMessage1, 3))
.DoNothing()
.Returns(passedMessage1)
.OccursOnce();
Mock.Arrange(() => MessageOperationsMock.InsertNetworkAddressIntoMessage
(Target.AlternateReportingAddress, passedMessage1, 25))
.DoNothing()
.Returns(passedMessage1)
.OccursOnce();
Target.PrimaryReportingAddress = LocalTestScenarios.TestIPAddress1;
Target.AlternateReportingAddress = LocalTestScenarios.TestIPAddress2;
Target.InsertNetworkAddressesIntoPart(passedMessage1);
Mock.Assert(MessageOperationsMock);
internal
virtual
IEnumerable<
byte
> InsertNetworkAddressesIntoPart(IEnumerable<
byte
> messageBeingCreated)
{
messageBeingCreated = MessageOperationsHelper.InsertNetworkAddressIntoMessage(PrimaryReportingAddress, messageBeingCreated, 3);
messageBeingCreated = MessageOperationsHelper.InsertNetworkAddressIntoMessage(AlternateReportingAddress, messageBeingCreated, 25);
return
messageBeingCreated;
}
protected
HardCodedMonitoringSettingsEntity Target;
protected
IDependencyInjection InjectorMock;
protected
IValidationOperations ValidatorMock;
protected
IMessageOperations MessageOperationsMock;
[SetUp]
public
void
InitializeBase()
{
Target = Mock.Create<HardCodedMonitoringSettingsEntity>(Behavior.CallOriginal);
InjectorMock = Mock.Create<IDependencyInjection>();
ValidatorMock = Mock.Create<IValidationOperations>();
MessageOperationsMock = Mock.Create<IMessageOperations>();
Target.DependencyInjector = InjectorMock;
Target.ValidationOperationsHelper = ValidatorMock;
Target.MessageOperationsHelper = MessageOperationsMock;
}
<
target
name
=
"Test"
description
=
"Test"
depends
=
"Build"
>
<
loadtasks
assembly
=
"C:\Program Files (x86)\Telerik\JustMock\Libraries\Telerik.JustMock.NAnt.dll"
/>
<
justmockstart
/>
<
nunit2
>
<
formatter
type
=
"Xml"
usefile
=
"true"
extension
=
".xml"
outputdir
=
"${build.dir}"
/>
<
test
assemblyname
=
"Tests/bin/release/Tests.dll"
appconfig
=
"Tests/bin/release/Tests.dll.config"
>
<
categories
>
<
exclude
name
=
"FIXME"
/>
</
categories
>
</
test
>
</
nunit2
>
<
justmockstop
/>
</
target
>
Assert.IsTrue(Mock.IsProfilerEnabled,
"Profile is enabled"
);