In a saucepan, heat the 2 tablespoons olive oil over medium-high heat. Whisk in the flour and cook for 1 to 2 minutes, stirring constantly. Add the garlic and continue to whisk until the garlic is fragrant, about 30 seconds. Whisk in the soy milk and stock all at once. Cook and stir until slightly thickened. Remove from the heat and set the sauce aside.
In a large nonstick frying pan, heat 1 teaspoon of the olive oil over medium-high heat. Add the mushrooms and shallot and saute until lightly browned, about 10 minutes. Stir in the parsley and salt. Transfer to a bowl and set aside to cool.
In the same pan, heat the remaining 1 teaspoon olive oil over medium-high heat. Add the spinach and stir quickly until the spinach is wilted but still bright green. Remove from the heat. Let cool slightly.
In a large bowl, beat 1/2 cup of the Parmesan and the egg white. Stir in the spinach and set aside.
Preheat the oven to 375 F. Lightly coat a 9-by-13-inch baking dish with cooking spray.
Spread 1/2 cup of the sauce in the dish and cover with 3 sheets of the pasta. Spoon half of the spinach mixture onto the pasta and spread gently. Cover with 3 more pasta sheets. Top with another 1/2 cup of sauce. Spread the mushroom mixture on top and cover with another 1/2 cup of sauce, then another layer of pasta. Spoon in the remaining spinach filling and top with the last 3 pasta sheets.
Add the remaining sauce and the remaining 1/4 cup Parmesan. Cover loosely with foil and bake for 25 minutes. Remove the foil and bake until golden, about 10 minutes longer. Let stand for 10 minutes before serving. Garnish with the basil.