Please follow the below-mentioned steps and try to incorporate them with your existing code:

 1. Create a Test controller in your project, for example, I am creating `HeroTestController` and specifying the namespace of your controller:
```
using HeroController = global::YourProjectName.HeroController;
```
 2. Define the variables in your Test Class:
```
private Mock<IMvcContext> mvcContextMock;
private Mock<HeroController> controller;
```
 3. Initialize those variables into your `TestInitialize` Method:
```
[TestInitialize]
public void TestInitialize()
 {
   this.mvcContextMock= new Mock<IMvcContext>();
   this.controller = new Mock<ClearingHeroController>(this.mvcContextMock.Object) { CallBase = true };
 }
```
 4. Write your Test method:
```
[TestMethod]
public void TestMethodA()
 {
   // arrange 
   GetItemByIdOptions option = new GetItemByIdOptions(this.YourObject.Id) { InferType = false, Lazy = Glass.Mapper.LazyLoading.Disabled };
   this.mvcContextMock.Setup(x => x.SitecoreService.GetItem<ModelName>(option))
                .Returns(this.YourObject);

  // act
           
  // assert 
           
}
```

Steps 1,2 and 3 can solve your first problem i.e. `Could not pass the Sitecore Context to controllers`.

Steps 4 can solve your second problem i.e. `Could not Mock the GetItem of the Glass Wrapper - GlassMappingProvider.`

Hope it helps you.