Я должен записать тесты направляющих с тестовым ключевым словом или определением?

Во-первых, создайте функцию (использующий CTE, общее выражение таблицы покончило с потребностью во временной таблице)

 create function dbo.SplitString 
    (
        @str nvarchar(4000), 
        @separator char(1)
    )
    returns table
    AS
    return (
        with tokens(p, a, b) AS (
            select 
                1, 
                1, 
                charindex(@separator, @str)
            union all
            select
                p + 1, 
                b + 1, 
                charindex(@separator, @str, b + 1)
            from tokens
            where b > 0
        )
        select
            p-1 zeroBasedOccurance,
            substring(
                @str, 
                a, 
                case when b > 0 then b-a ELSE 4000 end) 
            AS s
        from tokens
      )
    GO

Затем используйте его в качестве любой таблицы (или измените, это для установки в существующем сохранило proc) как это.

select s 
from dbo.SplitString('Hello John Smith', ' ')
where zeroBasedOccurance=1

Обновление

Предыдущая версия перестала бы работать для входной строки дольше, чем 4 000 символов. Эта версия заботится об ограничении:

create function dbo.SplitString 
(
    @str nvarchar(max), 
    @separator char(1)
)
returns table
AS
return (
with tokens(p, a, b) AS (
    select 
        cast(1 as bigint), 
        cast(1 as bigint), 
        charindex(@separator, @str)
    union all
    select
        p + 1, 
        b + 1, 
        charindex(@separator, @str, b + 1)
    from tokens
    where b > 0
)
select
    p-1 ItemIndex,
    substring(
        @str, 
        a, 
        case when b > 0 then b-a ELSE LEN(@str) end) 
    AS s
from tokens
);

GO

Использование остается тем же.

5
задан Anon 31 July 2009 в 17:02
поделиться

4 ответа

В последние годы произошел переход от коротких сокращенных названий тестов к более длинным, похожим на предложения названиям тестов. Частично это связано с популярностью RSpec и концепцией, согласно которой тесты являются спецификациями и должны быть описательными.

Если вы предпочитаете описательные имена тестов, я настоятельно рекомендую использовать метод test . Я считаю его более читабельным.

test "should not be able to login with invalid password" do
  #...
end

def_should_not_be_able_to_login_with_invalid_password
  #...
end

Кроме того, поскольку описание представляет собой строку, оно может содержать любые символы. С def вы ограничены в том, какие символы вы можете использовать.

8
ответ дан 14 December 2019 в 01:13
поделиться

Я считаю, что первый метод был реализован, начиная с Rails 2.2. Насколько мне известно, это просто улучшает читаемость вашего кода (так как def может быть любой функцией, а test используется только в тестовых примерах). Удачи!

2
ответ дан 14 December 2019 в 01:13
поделиться

Как предлагает Майк Трпчич, вам следует проверить RSpec и Cucumber. Я хотел бы добавить, что вам также следует взглянуть на:

Shoulda - это макро-фреймворк для написания кратких модульных тестов для ваших моделей / контроллеров, а второй является заменой приспособлений.

0
ответ дан 14 December 2019 в 01:13
поделиться

Я бы посоветовал провести ваше тестирование с помощью RSpec или Cucumber . Я использую оба для тестирования всех своих приложений. RSpec используется для тестирования моделей и контроллеров, а Cucumber тестирует представления (с помощью включенной функции Webrat ).

-1
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: