Как проверить без результатов в Massive - PullRequest
1 голос
/ 08 октября 2011

Я создал метод Find для класса Massive.Проблема в том, что я только что понял, что он всегда возвращает истину, так как результаты никогда не бывают нулевыми.Вот мой код:

    public dynamic Find(string email)
    {
        dynamic result = new ExpandoObject();
        dynamic experience = new ExpandoObject();
        result.Success = false;
        experience = this.Query(@"SELECT we.* FROM WorkExperience we
            LEFT JOIN Members m ON m.Id = we.MemberId 
            WHERE m.Email = @0", email);
        if (experience != null)
        {
            result.Experience = experience;
            result.Success = true;
        }
        return result;
    }

В этом случае опыт никогда не равен нулю, поэтому результат. Успех всегда возвращается как ложный.Как я могу проверить, возвращает ли this.Query () запись или записи?

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Я делаю это, чтобы проверить, возвращается ли мой запрос с записями.

Контроллер:

 public ActionResult Index() {
        _logger.LogInfo("In home");
        //var data = _tricksTable.All(orderBy: "DateCreated");
        dynamic viewModel = new ExpandoObject();
        var data = _tricksTable.Query("SELECT TOP(10) * FROM Tricks ORDER BY DateCreated DESC");
        viewModel.TenTricksNewestFirst = data;

        var data2 = _tricksTable.Query("SELECT TOP(10) * FROM Tricks ORDER BY Votes DESC");
        viewModel.TenTricksMostPopularFirst = data2;
        return View(viewModel);
    }

и тест:

[Test]
    public void a_user_should_be_able_to_view_10_newest_tricks_in_latest_videos_tab() {
        var result = _controller.Index() as ViewResult;
        dynamic viewModelExpando = result.ViewData.Model;
        var queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst;

        var i = Enumerable.Count(queryFromMassiveDynamic);
        Assert.AreNotEqual(0, i, "TenTricksNewestFirst returned 0 records");
        Assert.LessOrEqual(i,10, "Ten Tricks Newest First returned more than 10 tricks");
    }
0 голосов
/ 14 июня 2013

Для справки будущих ищущих ответов, на самом деле это гораздо проще сделать. Вместо того, чтобы использовать метод Query в DynamicModel, вызовите метод Scalar и убедитесь, что вы либо выбрали a) только одно значение, а затем проверьте, равен ли результат null, или b) количество совпадений, из которого вы можете преобразовать результат в целое число. и тест на основе возвращенного числа.

...