This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch 
feature/SLING-7978_improve-documentation-for-testing-sling-models
in repository https://gitbox.apache.org/repos/asf/sling-site.git

commit dfb2bf0de23fe114cb8faff689090ff5cc6228a8
Author: Konrad Windszus <[email protected]>
AuthorDate: Fri Oct 5 09:40:42 2018 +0200

    SLING-7978 improve documentation for testing Sling Models with Sling
    Mocks
---
 .../documentation/development/sling-mock.md        | 32 ++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/main/jbake/content/documentation/development/sling-mock.md 
b/src/main/jbake/content/documentation/development/sling-mock.md
index 845a226..99af184 100644
--- a/src/main/jbake/content/documentation/development/sling-mock.md
+++ b/src/main/jbake/content/documentation/development/sling-mock.md
@@ -51,8 +51,8 @@ The mock implementation supports:
    OSGi services from the [mocked OSGi][osgi-mock] environment.
 * Implementations of the servlet-related Sling API classes like 
`SlingHttpServletRequest` and `SlingHttpServletRequest`
     * It is possible to set request data to simulate a certain Sling HTTP 
request
-* Support for Sling Models (Sling Models API 1.1 and Impl 1.1 or higher 
required)
-* Additional services `MimeTypeService`
+* Support for Sling Models (Sling Models API 1.1 and Impl 1.1 or higher 
required), all relevant Sling Models services are registered by default
+* Additional services: `MimeTypeService`
 * Context Plugins
 
 The following features are *not supported*:
@@ -240,6 +240,34 @@ Example:
 
 If you use the `SlingContext` JUnit rule you case just use 
`context.resourceResolver()`.
 
+### Sling Models
+
+You should use the following approach to test Sling Models.
+
+#### Model Registration
+
+First you need to make sure that the model you want to test is registered. 
+Since Sling Mocks 1.9.0/2.2.0 the Sling Models from the classpath are 
automatically registered 
([SLING-6363](https://issues.apache.org/jira/browse/SLING-6363)) when the 
Manifest contains the right bundle headers (`Sling-Model-Packages` or 
`Sling-Model-Classes`).  This behaviour can be tweaked since version 2.2.20 
with the `SlingContextBuilder.registerSlingModelsFromClassPath(false)` method 
([SLING-7712](https://issues.apache.org/jira/browse/SLING-7712)).
+
+Manual registration is supported via `SlingContext.addModelsForPackage(...)` 
and `SlingContext.addModelsForClasses(...)`.
+
+#### Model Instantiation
+
+Preferably use the `ModelFactory.createModel(...)` method rather than the 
adaptTo method to benefit from better error messages in case of errors.
+
+
+    #!java
+    // load some content into the mocked repo
+    context.load().json(..., "/resource1");
+    
+    // load resource
+    Resource myResource = content.resourceResolver().getResource("/resource1");
+    
+    // instantiate Sling Model (adaptable via Resource)
+    // this will throw exceptions if model cannot be instantiated
+    MyModel myModel = 
context.getService(ModelFactory.class).createModel(myResource, MyModel.class);
+
+
 
 ### Adapter Factories
 

Reply via email to