title: Golang using Null*s in tests
body: <p>I have some Go tests, and I am trying to use Null*s correctly, but go test is giving errors and I am not sure what is wrong.</p>
  
  <p>Here is the error message:</p>
  
  <pre><code>go test ./...
  utils/db.go:1:1: expected 'package', found 'EOF'
  ?       mobifit [no test files]
  # mobifit/app/entities
  app/entities/user_test.go:34: cannot use dateOfBirth (type func() time.Time) as type time.Time in assignment
  app/entities/user_test.go:58: User.Gender undefined (type User has no method Gender)
  app/entities/user_test.go:59: User.DateOfBirth undefined (type User has no method DateOfBirth)
  app/entities/user_test.go:60: User.Height undefined (type User has no method Height)
  app/entities/user_test.go:61: User.CurrentWeight undefined (type User has no method CurrentWeight)
  app/entities/user_test.go:65: User.Email undefined (type User has no method Email)
  app/entities/user_test.go:66: User.HashedPassword undefined (type User has no method HashedPassword)
  app/entities/user_test.go:67: User.FirstName undefined (type User has no method FirstName)
  app/entities/user_test.go:68: User.LastName undefined (type User has no method LastName)
  app/entities/user_test.go:69: User.CreatedAt undefined (type User has no method CreatedAt)
  app/entities/user_test.go:69: too many errors
  FAIL    mobifit/app/entities [build failed]
  ?       mobifit/app/handlers    [no test files]
  </code></pre>
  
  <p>Here are the tests:</p>
  
  <pre><code>package entities
  
  import (
      // "database/sql"
      // "github.com/go-sql-driver/mysql"
      "github.com/stretchr/testify/assert"
      "testing"
      "time"
  )
  
  var (
      email          = "leebrooks0@gmail.com"
      hashedPassword = "password"
      firstName      = "Lee"
      lastName       = "Brooks"
      gender         = Male
      dateOfBirth    = time.Now
      height         = 1.85
      currentWeight  = 101.3
  )
  
  func privacyConcernedUser() *User {
      user := new(User)
      user.Email.String = email
      user.HashedPassword.String = hashedPassword
      user.FirstName.String = firstName
      user.LastName.String = lastName
      return user
  }
  
  func normalUser() *User {
      user := privacyConcernedUser()
      user.Gender.String = gender
      user.DateOfBirth.Time = dateOfBirth
      user.Height.Float64 = height
      user.CurrentWeight.Float64 = currentWeight
      return user
  }
  
  func TestSignUpPrivacyConcernedUser(t *testing.T) {
      user := privacyConcernedUser()
      user.SignUp()
  
      checkMandatoryValues(t, user)
  
      assert.Nil(t, user.Gender.String)
      assert.Nil(t, user.DateOfBirth.Time)
      assert.Nil(t, user.Height.Float64)
      assert.Nil(t, user.CurrentWeight.Float64)
  }
  
  func TestSignUpNormalUser(t *testing.T) {
      user := normalUser()
      user.SignUp()
  
      checkMandatoryValues(t, user)
  
      assert.Equal(t, User.Gender.String, gender)
      assert.Equal(t, User.DateOfBirth.Time, dateOfBirth)
      assert.Equal(t, User.Height.Float64, height)
      assert.Equal(t, User.CurrentWeight.Float64, currentWeight)
  }
  
  func checkMandatoryValues(t *testing.T, user *User) {
      assert.Equal(t, User.Email.String, email)
      assert.Equal(t, User.HashedPassword.String, hashedPassword)
      assert.Equal(t, User.FirstName.String, firstName)
      assert.Equal(t, User.LastName.String, lastName)
      assert.NotNil(t, User.CreatedAt.Time) // TODO: Should rather check for not empty
  }
  </code></pre>
  
  <hr>
  
  <p>UPDATE: Where is the User type?</p>
  
  <pre><code>type User struct {
      Id             sql.NullInt64
      Email          sql.NullString
      HashedPassword sql.NullString
      RoleId         sql.NullInt64
      FirstName      sql.NullString
      LastName       sql.NullString
      Gender         sql.NullString
      DateOfBirth    mysql.NullTime
      Height         sql.NullFloat64
      CurrentWeight  sql.NullFloat64
      CreatedAt      mysql.NullTime
      ConfirmedAt    mysql.NullTime
      LastActivityAt mysql.NullTime
      DeletedAt      mysql.NullTime
  }
  
  func (u *User) SignUp() {
  
  }
  </code></pre>