views:

78

answers:

2

I'm writing a mock backend service for my flex application. Because I will likely need to add/edit/modify the mock data over time, I'd prefer not to generate the data in code like this:

var mockData = new Array();
mockData.push(new Foo(1, "abc", "xyz"));
mockData.push(new Foo(2, "def", "xyz"));
...

Rather I'd like to store the data in a file in some format that it can be easily serialized into my strongly-typed value objects (i.e. Foo above). Ideally I'd like to create the data in a self-describing format (i.e. what data type each field is, what class it represents, etc)

Does this make sense? Any suggestions?

A: 

Write a method to serialize an "inflated" version of your object. Put the output of that into a file and load it up as part of your test setup. When you want to edit the values, simply edit the xml file. I dont know if this is possible in flex but I will usually include these files as a resource in my test library so that I do not need to copy the file to any specific location for a test run.

pattersonc
I think this is a good strategy but what I'm trying to figure out is what is a good readable but parsible format?
Marplesoft
XML? I'm not sure what libraries are available for Flex. Check out dustmachine's suggestion.
pattersonc
Flex supports e4x for xml
Amarghosh
+2  A: 

I would highly recommend the asx3m library. It easily allows serialization to a very readable XML format like this for an object of class Foo:

<com.example.Foo>
   <myVar>Something</myVar>
   <myArrList>
      <string>one</string>
      <string>two</string>
   </myArrList>
</com.example.Foo>

The code to de-serialize looks like this:

Asx3mer.instance.fromXML(someXMLObj)

The project site has some good examples and it's not too hard to get this off the ground.

dustmachine
Note: In case it's not already assumed, the asx3m library also does serialization.
dustmachine
This is great, thanks! The datafiles will get a bit lengthy (as compared to something like CSV) but this seems like it will do the job, thank you.
Marplesoft