Bring a large pot of water to a boil. Add pasta and cook until tender. Drain and set aside.
In a medium pot over medium heat, melt butter. Add mushrooms and onions and sauté until mushrooms are soft and onions are translucent, about 5 minutes.
Add flour, milk, Worcestershire sauce, and chicken stock. Cook for 5-8 minutes, or until sauce is smooth.
Add spinach and cook until it wilts.
Toss in pasta, diced ham, and salt and pepper to taste.
Transfer everything to a baking dish, top with cheddar cheese, and bake until cheese is melted and bubbling, about 5 minutes.