Testing programmatically
The Simulator target (sim)
In addition to cloud services as backends, the Wing SDK is shipped with built-in support for a simulator backend for each resource. The simulator provides a fully-functional implementation for the cloud resources you use in your application.
For example, the simulated implementation of cloud.Queue is simply an
in-memory array of items.
Compiling your program
So now, we return to the root of the project and compile our app and target the cloud simulator using the following command:
cd ../../../../
wing compile -t sim hello.w
Compilation output
This would create a new file at target/hello.wsim which is the simulated
version of your entire cloud application.
Now that we have an hello.wsim file, we can either interact with through the Wing
Console or load it into a Simulator class which is shipped as part of the Wing SDK and use it programmatically.
This means that, for example, you can interact with your simulated Wing application directly from the Node.js CLI.
If you are using the Wing CLI through a global installation, you'll need to install the Wing SDK library locally using:
npm i @winglang/sdk
Starting Node.js
Start Node.js (with experimental await support):
node --experimental-repl-await
Start the simulator
Now, we import the Wing SDK library:
const sdk = require("@winglang/sdk"); // import the wing sdk library
const simulator = new sdk.testing.Simulator({ simfile : "./target/hello.wsim"}); // create an instance of the Simulator
await simulator.start(); // start the simulator 
Now that our app is running, lets trigger a message on the queue
Trigger a message to the queue
For example, we can list all the resources in the app:
 const queue = simulator.getResource("root/Default/cloud.Queue"); // retrieve the queue resource
 await queue.push("Wing")
Viewing generated file
const bucket = simulator.getResource("root/Default/cloud.Bucket"); // retrieve the bucket resource
await bucket.list() // will show available files
await bucket.get("wing.txt") // will show the file content
The result of the last two function calls will be
[ 'wing.txt' ]
'Hello, Wing'
Congratulations! 🚀
You've just tested your cloud application through the Simulator class in NodeJS.
If you're done playing with the simulator, you can clean up and uninstall the SDK (Wing's CLI already has a copy of it bundled).
npm uninstall @winglang/sdk