diff --git a/test12/src/main/java/org/apache/myfaces/test/mock/MockExternalContext.java b/test12/src/main/java/org/apache/myfaces/test/mock/MockExternalContext.java
index 9868dd3..1774fa0 100644
--- a/test12/src/main/java/org/apache/myfaces/test/mock/MockExternalContext.java
+++ b/test12/src/main/java/org/apache/myfaces/test/mock/MockExternalContext.java
@@ -465,6 +465,34 @@
         response.sendRedirect(requestURI);
         FacesContext.getCurrentInstance().responseComplete();
     }
+    
+    public String encodeWebsocketURL(String baseUrl)
+    {
+        Integer port = 8080;
+        port = (port == 0) ? null : port;
+        if (port != null && 
+            !port.equals(request.getServerPort()))
+        {
+            String scheme = "http";
+            String serverName = request.getServerName();
+            String url;
+            try
+            {
+                url = new URL(scheme, serverName, port, baseUrl).toExternalForm();
+                url = url.replaceFirst("http", "ws");
+                return url;
+            }
+            catch (MalformedURLException ex)
+            {
+                //If cannot build the url, return the base one unchanged
+                return baseUrl;
+            }
+        }
+        else
+        {
+            return baseUrl;
+        }
+    }
 
     /**
      * <p>Iterator implementation that wraps an enumeration
diff --git a/test12/src/main/java/org/apache/myfaces/test/mock/MockViewHandler.java b/test12/src/main/java/org/apache/myfaces/test/mock/MockViewHandler.java
index 5e17d0e..5e3aa4e 100644
--- a/test12/src/main/java/org/apache/myfaces/test/mock/MockViewHandler.java
+++ b/test12/src/main/java/org/apache/myfaces/test/mock/MockViewHandler.java
@@ -158,5 +158,12 @@
     {
 
     }
+    
+    public String getWebsocketURL(FacesContext context, String channelAndToken)
+    {
+        String url = context.getExternalContext().getRequestContextPath() + 
+                "/javax.faces.push/"+channelAndToken;
+        return url;
+    }
 
 }
diff --git a/test20/src/main/java/org/apache/myfaces/test/mock/MockPartialViewContext.java b/test20/src/main/java/org/apache/myfaces/test/mock/MockPartialViewContext.java
index 6ebc187..7526526 100644
--- a/test20/src/main/java/org/apache/myfaces/test/mock/MockPartialViewContext.java
+++ b/test20/src/main/java/org/apache/myfaces/test/mock/MockPartialViewContext.java
@@ -55,6 +55,7 @@
     private Boolean _partialRequest = null;
     private Boolean _renderAll = null;
     private PartialResponseWriter _partialResponseWriter = null;
+    private List<String> _evalScripts = new ArrayList<String>();
 
     public MockPartialViewContext(FacesContext context)
     {
@@ -312,6 +313,12 @@
         _partialRequest = null;
         _renderAll = null;
         _facesContext = null;
+        _evalScripts = new ArrayList<String>();
+    }
+    
+    public List<String> getEvalScripts()
+    {
+        return _evalScripts;
     }
 
     private static String[] splitShortString(String str, char separator)
