```ruby
require "test_helper"

class FileDownloaderTest < Test::Unit::TestCase
  setup do
    @downloader, @tempfile = vagrant_mock_downloader(Vagrant::Downloaders::File)
    @uri = "foo.box"
  end

  context "preparing" do
    should "raise an exception if the file does not exist" do
      File.expects(:file?).with(@uri).returns(false)

      assert_raises(Vagrant::Errors::DownloaderFileDoesntExist) {
        @downloader.prepare(@uri)
      }
    end
  end

  context "downloading" do
    should "cp the file" do
      path = '/path'
      @tempfile.expects(:path).returns(path)
      FileUtils.expects(:cp).with(@uri, path)
      @downloader.download!(@uri, @tempfile)
    end
  end

  context "matching a uri" do
    should "return true if the File exists on the file system" do
      File.expects(:exists?).with('foo').returns(true)
      assert Vagrant::Downloaders::File.match?('foo')
    end
  end
end
```

Improve the file downloader test to use a real file
user
```ruby
require "test_helper"

class FileDownloaderTest < Test::Unit::TestCase
  setup do
    @downloader, @tempfile = vagrant_mock_downloader(Vagrant::Downloaders::File)
    @uri = "foo.box"
  end

  context "preparing" do
    should "raise an exception if the file does not exist" do
      File.expects(:file?).with(@uri).returns(false)

      assert_raises(Vagrant::Errors::DownloaderFileDoesntExist) {
        @downloader.prepare(@uri)
      }
    end
  end

  context "downloading" do
    setup do
      clean_paths
    end

    should "cp the file" do
      uri = tmp_path.join("foo_source")
      dest = tmp_path.join("foo_dest")

      # Create the source file, then "download" it
      File.open(uri, "w+") { |f| f.write("FOO") }
      File.open(dest, "w+") do |dest_file|
        @downloader.download!(uri, dest_file)
      end

      # Finally, verify the destination file was properly created
      assert File.file?(dest)
      File.open(dest) do |f|
        assert_equal "FOO", f.read
      end
    end
  end

  context "matching a uri" do
    should "return true if the File exists on the file system" do
      File.expects(:exists?).with('foo').returns(true)
      assert Vagrant::Downloaders::File.match?('foo')
    end
  end
end
```
assistant