public async Task CompileAsync_InvalidatesCache_IfChangeTokenExpires() { // Arrange var path = "/Views/Home/Index.cshtml"; var fileProvider = new TestFileProvider(); var fileNode = fileProvider.AddFile(path, "some content"); var viewCompiler = GetViewCompiler(fileProvider); // Act 1 var result1 = await viewCompiler.CompileAsync(path); // Assert 1 Assert.NotNull(result1.Item); // Act 2 // Simulate deleting the file fileProvider.GetChangeToken(path).HasChanged = true; fileProvider.DeleteFile(path); viewCompiler.Compile = _ => throw new Exception("Can't call me"); var result2 = await viewCompiler.CompileAsync(path); // Assert 2 Assert.NotSame(result1, result2); Assert.Null(result2.Item); }