ASP.NET测试当前登录用户UserId

时间:2017-12-05 16:07:35

标签: asp.net asp.net-membership membership-provider

protected void UploadImage_Click(object sender, EventArgs e)
    {
        HttpPostedFile postedFile = ImageUploader.PostedFile;
        string fileExtension = 
Path.GetExtension(Path.GetFileName(postedFile.FileName));
        if (ImageUploader.HasFile && fileExtension.ToLower() == ".jpg" || 
fileExtension.ToLower() == ".gif" || fileExtension.ToLower() == ".png")          
        {

            Stream fs = postedFile.InputStream;
            BinaryReader br = new BinaryReader(fs);
            Byte[] image = br.ReadBytes((int)fs.Length);
            Guid UserId = (Guid)Membership.GetUser().ProviderUserKey;

            string cs = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            using (SqlConnection con = new SqlConnection(cs))
            {
                string sqlcmd = "insert into ProfileImage values(@UserId, @ImageData)";
                SqlCommand cmd = new SqlCommand(sqlcmd, con);
                cmd.Parameters.AddWithValue("@UserId", UserId);
                cmd.Parameters.AddWithValue("@ImageData", image);

                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();

                ErrorLabel.Visible = true;
                ErrorLabel.Text = "Upload Success!";
                ErrorLabel.ForeColor = System.Drawing.Color.Green;

            }

        }
        else
        {
            ErrorLabel.Visible = true;
            ErrorLabel.Text = "Upload failed: Only jpg, gif, and png allowed.";
            ErrorLabel.ForeColor = System.Drawing.Color.Red;

        }

以上是我用于将文件上传到数据库以获取用户图像的代码。我需要知道如何编写可以返回GUID而不是null值的单元测试,以确保代码按预期工作。

基本上,我想将当前登录的用户userid从成员资格提供程序以及上载的图像添加到数据库中,以便以后轻松检索。当我通过修改数据库以接受除uniqueidentifier和插入临时用户标识的代码之外的其他内容来测试它时,插入有效。但现在我想确保我可以实际获取当前登录的用户ID并将其添加到数据库中。

当我测试这段代码时,它会说错误

Guid UserId = (Guid)Membership.GetUser().ProviderUserKey

part返回一个空值,即使我将用户添加到成员资格表中也是如此。 如何正确测试当前登录用户userid的检索?

1 个答案:

答案 0 :(得分:1)

经过更多的挖掘和研究,在stackoverflow中找到了这个。再说一次,不是专业人士,大声笑,甚至不知道使用什么样的关键词,但我发现了这一点,我会试一试!这看起来很像我正在寻找的,一种模拟用户guid的单元测试方式。

Mocking Guid.NewGuid()