Permalink
Browse files

Updated the readme to have a better description

The main readme has a better example of how the project works.
  • Loading branch information...
staticcat committed Sep 21, 2015
1 parent b50a1e2 commit 471532dcbaa142d5c95969542bebd76c6b37aeaf
Showing with 79 additions and 2 deletions.
  1. +79 −2 README.md
View
@@ -2,6 +2,83 @@
Delphi Mocks is a simple mocking framework for Delphi XE2 or later. It makes use of RTTI features that are only available in Delphi XE2, however I do hope to be able to get it working with earlier versions of Delphi (2010 or later) at some stage.
UPDATED : Now implements mocking on classes and interfaces.
# Example
TODO : More testing.
```Pascal
unit Delphi.Mocks.Examples.Interfaces;
interface
uses
SysUtils,
DUnitX.TestFramework,
Delphi.Mocks;
type
{$M+}
TSimpleInterface = Interface
['{4131D033-2D80-42B8-AAA1-3C2DF0AC3BBD}']
procedure SimpleMethod;
end;
TSystemUnderTestInf = Interface
['{5E21CA8E-A4BB-4512-BCD4-22D7F10C5A0B}']
procedure CallsSimpleInterfaceMethod;
end;
{$M-}
TSystemUnderTest = class(TInterfacedObject, TSystemUnderTestInf)
private
FInternalInf : TSimpleInterface;
public
constructor Create(const ARequiredInf: TSimpleInterface);
procedure CallsSimpleInterfaceMethod;
end;
TMockObjectTests = class
published
procedure Simple_Interface_Mock;
end;
implementation
uses
Rtti;
{ TMockObjectTests }
procedure TMockObjectTests.Simple_Interface_Mock;
var
mock : TMock<TSimpleInterface>;
sutObject : TSystemUnderTestInf;
begin
//SETUP: Create a mock of the interface that is required by our system under test object.
mock := TMock<TSimpleInterface>.Create;
//SETUP: Add a check that SimpleMethod is called atleast once.
mock.Setup.Expect.AtLeastOnce.When.SimpleMethod;
//SETUP: Create the system under test object passing an instance of the mock interface it requires.
sutObject := TSystemUnderTest.Create(mock.Instance);
//TEST: Call CallsSimpleInterfaceMethod on the system under test.
sutObject.CallsSimpleInterfaceMethod;
//VERIFY: That our passed in interface was called at least once when CallsSimpleInterfaceMethod was called.
mock.Verify('CallsSimpleInterfaceMethod should call SimpleMethod');
end;
{ TSystemUnderTest }
procedure TSystemUnderTest.CallsSimpleInterfaceMethod;
begin
FInternalInf.SimpleMethod;
end;
constructor TSystemUnderTest.Create(const ARequiredInf: TSimpleInterface);
begin
FInternalInf := ARequiredInf;
end;
end.
```

0 comments on commit 471532d

Please sign in to comment.