diff --git a/lib/rbvmomi/connection.rb b/lib/rbvmomi/connection.rb
index f4313db2..378a3e65 100644
--- a/lib/rbvmomi/connection.rb
+++ b/lib/rbvmomi/connection.rb
@@ -132,10 +132,10 @@ def obj2xml xml, name, type, is_array, o, attrs={}
end
end
when BasicTypes::ManagedObject
- fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class
+ fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class and not expected == BasicTypes::AnyType
xml.tag! name, o._ref, :type => o.class.wsdl_name
when BasicTypes::DataObject
- fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class
+ fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class and not expected == BasicTypes::AnyType
xml.tag! name, attrs.merge("xsi:type" => o.class.wsdl_name) do
o.class.full_props_desc.each do |desc|
if o.props.member? desc['name'].to_sym
diff --git a/test/test_serialization.rb b/test/test_serialization.rb
index cd2f3540..c036e4ec 100644
--- a/test/test_serialization.rb
+++ b/test/test_serialization.rb
@@ -292,4 +292,20 @@ def test_time
2011-11-16T13:36:08-08:00
EOS
end
+
+ # TODO test all types
+ def test_any_type
+ obj = 1
+ check <<-EOS, obj, 'xsd:anyType', false
+1
+ EOS
+
+ obj = VIM::HostAccountSpec(:id => 'root', :password => 'foo')
+ check <<-EOS, obj, 'xsd:anyType', false
+
+ root
+ foo
+
+ EOS
+ end
end