diff --git a/_states/cinderv3.py b/_states/cinderv3.py
index 511ec5f..c35c32d 100644
--- a/_states/cinderv3.py
+++ b/_states/cinderv3.py
@@ -13,7 +13,11 @@
 
 
 def _cinder_call(fname, *args, **kwargs):
-    return __salt__['cinderv3.{}'.format(fname)](*args, **kwargs)
+    if __opts__.get('test') and not (fname.find('_list') > 0 or fname.find('_get_') > 0):
+        return {'changes': 'cinderv3 state {} with options {} {} will be executed'.format(fname, args, kwargs),
+                'result': None}
+    else:
+        return __salt__['cinderv3.{}'.format(fname)](*args, **kwargs)
 
 
 def _resource_present(resource, name, cloud_name, **kwargs):
@@ -168,6 +172,13 @@
             'result': True,
             'comment': 'Volume type "{0}" was updated'.format(name)
         }
+    elif signal_create["result"] is None:
+        ret = {
+            'name': name,
+            'changes': keys,
+            'result': None,
+            'comment': 'Volume type "{0}" will be updated'.format(name)
+        }
     else:
         ret = {
             'name': name,
@@ -178,6 +189,12 @@
     return ret
 
 
+def _check_test_mode():
+    if __opts__.get('test'):
+        return None
+    else:
+        return True
+
 def _succeeded(op, name, resource, changes=None):
     msg_map = {
         'create': '{0} {1} created',
@@ -189,7 +206,7 @@
     }
     changes_dict = {
         'name': name,
-        'result': True,
+        'result': _check_test_mode,
         'comment': msg_map[op].format(resource, name),
         'changes': changes or {},
     }
