Category Archives: SharePoint онлайн

Злий захоплюючих оголошення

Роблю оголошення насправді не Моя справа, але на цей раз, І справді я радий про щойно запустили слалом Big Apple сайту SharePoint, на. 

Я працюю в слалом консалтинг і керувати порталах & Співпраця практики.  Big Apple сайт це «мої» сайт для моєї практики тут, в Нью-Йорку.  Я давно хотів один з цих. Я впевнений, що багато SP профі було б хотіла щось подібне.  Скільки разів ми подивилися на нашу власну компанію спільного сайту, або один з клієнтами і бачили їх побудови ІТ out а просто, знаючи і бажаючи, що вони будуть будувати на СП?  Ми всі знаємо, що SP є досить добре на такого роду речі, але це не дуже поширені. 

Ну, світи, нарешті вирівняні тільки право на мене-SP Online є дійсно недорогий, Я мав право команді і достатньо часу, щоб зробити його.

Це було дивовижну подорож, щоб дістатися до запуску і і деякі, що розділяє там на сайті.

Читайте все про нього тут, і якщо ви зацікавлені в деталі за ним, Я більш ніж щасливі, щоб говорити про це.

Ось офіційний анонс посилання: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=82 #O365

</кінець>

Як: Налаштувати Модульне тестування та тестування покриття з QUnit.js і Blanket.js для офісу 365 Застосунку SharePoint

Вступ

Я було вивчення Модульне тестування та тестування покриття для JavaScript, як я працюю над новим застосунку SharePoint для SharePoint онлайн, в офісі 365 Люкс.  Контури очевидні дослідження привели мене Qunit.js і після цього права, Щоб Blanket.js.

QUnit дозвольте мені встановити юніт-тестів і згрупувати їх на модулі.  Модуль — просто простий спосіб організування схожі тести. (Я не впевнений, я використовую його за призначенням, але вона працює для мене до цих пір з невеликий набір тестів, я до сих пір визначено).

Blanket.js інтегрується з Qunit і покаже мене фактичного ліній JavaScript, які були- і більш важливо – були не фактично виконані в ході працює тести.  Це «покриття»-ліній, які виконані покриваються тест, а інші ні.

Від створення хороші тести до перегляду покриття, Ми можемо зменшити ризик, що наш код має приховані дефекти.  Гарні часи.

Qunit

Припускаючи, що у вас Visual Studio проекту встановити, Почніть з завантаження JavaScript пакета від http://qunitjs.com.  Додати JavaScript і CSS відповідного на ваше рішення.  Шахта виглядає наступним чином:

image

Фігура 1

Як ви можете бачити, Я використовую 1.13.0 у той час я написав це повідомлення в блозі. Не забудьте завантажити й додати CSS-файл.

Що з на шляху, наступним кроком буде створити свого роду випробування упряжі і посилатися на біт Qunit.  Я тестування купу функції в сценарій файл з ім'ям "QuizUtil.js", так що я створив HTML-сторінку під назвою "QuizUtil_test.html", як показано:

image Фігура 2

Ось код:

<!DOCTYPE HTML>
<HTML xmlns= "http://www.w3.org/ 1999/xhtml">
<Голова>
    <Назва>QuizUtil тест з Qunit</Назва>
    <посилання REL= "таблиця стилів" href="../CSS/qunit-1.13.0.CSS" />
    <сценарій тип= текст/javascript"" НДЦ="QuizUtil.js" дані палітурці></сценарій>
    <скрипт типу ="текст/javascript" src ="qunit-1.13.0.js"></сценарій>
    <скрипт типу ="текст/javascript" src ="blanket.min.js"></сценарій>

    <сценарій>
        модуль("getIDFromLookup");
        тест("QuizUtil getIDFromLookupField", функція () {
            VAR goodValue = "1;#Paul Galvin";

            Рівне(getIDFromLookupField(goodValue) + 1, 2), "Ідентифікатор [" + goodValue + "] + 1 повинно бути 2";
            Рівне(getIDFromLookupField(не визначено), не визначено, "Невизначений вхідного аргументу слід повернути undefined результат.");
            Рівне(getIDFromLookupField(""), не визначено, "Порожні вхідного аргументу слід повернути невизначене значення.");
            Рівне(getIDFromLookupField("gobbledigood3-thq;dkvn Ада;skfja sdjfbvubvqrubqer0873407t534piutheqw;в. н."), не визначено,"Завжди прем'єр результат кабріолет на ціле число");
            Рівне(getIDFromLookupField("2;#деякі інші особи"), "2", "Перевірка [2;#деякі інші особи].");
            Рівне(getIDFromLookupField("9834524;#довгого вартість"), "9834524", "Велике значення тест.");
            notEqual(getIDFromLookupField("5;#хто-небудь", 6), 6, "Тестування на notEqual (5 Це не дорівнює 6 для цього зразка: [5;#хто-небудь]");

        });

        модуль("htmlEscape");
        тест("QuizUtil htmlEscape()", функція () {
            Рівне(htmlEscape("<"), "&lt;", "Втечі на менш ніж оператор ('<')");
            Рівне(htmlEscape("<DIV клас =  "someclass">Частина тексту</DIV>"), "&lt;DIV клас =&quot;SomeClass&quot;&gt;Частина тексту&lt;/DIV&gt;", "Більш складні тестовий рядок.");
        });

        модуль("getDateAsCaml");
        тест("QuizUtil getDateAsCaml()", функція () {
            Рівне(getDateAsCaml(нові Дата("12/31/2013")), "2013-12-31T:00:00:00", "Тестування жорстких закодованих дата: [12/31/2013]");
            Рівне(getDateAsCaml(нові Дата("01/05/2014")), "2014-01-05T:00:00:00", "Тестування жорстких закодованих дата: [01/05/2014]");
            Рівне(getDateAsCaml(нові Дата("01/31/2014")), "2014-01-31T:00:00:00", "Тестування жорстких закодованих дата: [01/31/2014]");
            Рівне(getTodayAsCaml(), getDateAsCaml(нові Дата()), "getTodayAsCaml() має дорівнювати getDateAsCaml(Нова дата())");
            Рівне(getDateAsCaml("дурниці значення"), не визначено, "Спробувати отримати дату дурниця значення.");
            Рівне(getDateAsCaml(не визначено), не визначено, "Спробуйте отримати дату на [не визначено] Дата.");
        });

        модуль("getParameterByName");
        тест("QuizUtil getParameterByName (від рядку запиту)", функція () {
            Рівне(getParameterByName(не визначено), не визначено, "Спробуйте отримати Невизначена параметр слід повернути невизначеною.");
            Рівне(getParameterByName("не існує"), не визначено, "Спробувати отримати значення параметра, коли ми знаємо, що не існує параметра.");

        });

        модуль(«Печиво");
        тест("QuizUtil різні функції cookie.", функція () {
            Рівне(setCookie("тест", "1", -1), getCookieValue("тест"), «Get я встановив cookie повинен працювати.");
            Рівне(setCookie("anycookie", "1", -1), Істина, "Налаштування дійсні приготування слід повернути значення" true".");
            Рівне(setCookie("crazy cookie ім'я !@#$%"%\^&*(()?/><.,", "1", -1), Істина, "Установка поганий cookie ім'я слід повернути"false".");
            Рівне(setCookie(не визначено, "1", -1), не визначено, "Проходження невизначене, як ім'я файлу cookie.");
            Рівне(getCookieValue("не існує"), "", "Cookie не існує тесту.");
        });

    </сценарій>
</Голова>
<тіло>
    <DIV ID= "qunit"></DIV>
    <DIV ID= "qunit арматур"></DIV>

</тіло>
</HTML>

Є кілька речей, що відбувається тут:

  1. Посилання на мій код (QuizUtil.js)
  2. Посилання на Qunity.js
  3. Визначення деяких модулів (getIDFromLookup, Печиво, та інші)
  4. Розміщення на <DIV> ID рівним "qunit".

Потім, Я просто підтягти цю сторінку, і ви отримаєте щось на зразок цього:

image

Фігура 3

Якщо ви подивіться через верхню, є кілька способів, дві з яких є цікавим:

  • Приховати пройшли випробування: Досить очевидно.  Може допомогти очі просто побачити проблемні області і не багато перешкод.
  • Модуль: (падіння вниз): Це буде фільтрувати тести аж до тільки ті груп випробувань, що ви хочете.

Що стосується тести, самі – кілька коментарів:

  • Само собою зрозуміло, що вам потрібно написати код, така, що це в першу чергу перевіряються.  За допомогою засобу можуть допомогти забезпечити дотримання цієї дисципліни. Наприклад, Я мав функції, яка називається "getTodayAsCaml()”.  Це не дуже перевіряються, оскільки необхідне немає вхідного аргументу і протестувати його за рівність, Ми повинні постійно оновлювати тестовим кодом з урахуванням поточної дати.  Я реструктурувати, шляхом додавання даних вхідний параметр потім проходить поточну дату, коли я хочу поточну дату у форматі CAML.
  • Qunit рамках документи свого випробування, і здається досить надійною.  Це можна зробити прості речі, як тестування за рівність і також має підтримку стилю ajax дзвінки ("реального" або mocked, використовуючи ваш улюблений насмішник).
  • Також проходять через процес змушує вас думати, через край випадках – що відбувається з "невизначені" або null передається в функції.  Це робить його мертва проста, щоб перевірити ці сценарії на.  Хороший матеріал.

Покриття з Blanket.js

Blanket.js доповнює Qunit шляхом відстеження фактичних рядків коду, що виконати в ході проведення тестів.  Вона інтегрує право в Qunit таким чином, навіть якщо це абсолютно окремий додаток, він грає красиво-дійсно схоже це один додаток безшовні.

Це blanket.js в дії:

image Фігура 4

image

Фігура 5

(Ви насправді мають натискати на прапорець "Увімкнути охоплення" у верхній [див. малюнок 3] Щоб увімкнути цю функцію.)

Виділені лінії на малюнку 5 не були виконані, будь-який з моїх тестах, тому необхідно розробити тест, що змушує їх виконання, якщо я хочу, щоб повне покриття.

Отримати blanket.js працює, виконавши такі дії.:

  1. Завантажити його з http://blanketjs.org/.
  2. Додати його до вашого проекту
  3. Оновити вашу пробну сторінку амуніція (QuizUtil_test.html в моєму випадку) наступним чином:
    1. Код посилання
    2. Прикрасити ваш <сценарій> посилання, як це:
    <сценарій тип= текст/javascript"" НДЦ="QuizUtil.js" дані палітурці></сценарій>

Blanket.js підбирає атрибут "даних палітурці" і робить свою магію.  Це гачки в Qunit, оновлює користувальницький інтерфейс, щоб додати параметр "Увімкнути охоплення" і вуаля!

Резюме (TL; Д-Р)

Використовувати Qunit, щоб написати ваш тести.

  • Завантажити його
  • Додати його до вашого проекту
  • Написати упряж тестової сторінки
  • Створення тестів
    • Деякі коду бути перевіряються рефакторінг
    • Будьте винахідливі!  Думаю, божевільні, неможливо сценарії та перевірити їх все одно.

Використовувати blanket.js, щоб забезпечити висвітлення

  • Переконайтеся, що працює Qunit
  • Завантажити blanket.js і додати його до вашого проекту
  • Додати його в вашу пробну сторінку амуніція:
    • Додати посилання на blanket.js
    • Додати атрибут "даних палітурці" до вашого <сценарій> Тег
  • Запустити Qunit випробувань.

Я ніколи не робив це раніше і деякі елементарні речі працюють в кілька годин. 

Щасливі тестування!

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

BPOS 2010 і "розширеним”

Я читав один зі Ці досить загальні статті бла, як на BPOS (Microsoft exchange і SharePoint у хмарі) і на щастя waded через до кінця:

З точки зору інших найближчій перспективі кінцевих результатів, Microsoft є здійснювали надати в BPOS v.Next рідного PowerShell сценаріїв за допомогою PowerShell кінцевої точки побудувати PowerShell версії 2. Автентифікація буде здійснюватися через Інтернет-посвідчень, з єдиного облікових даних в змозі бути використані для PowerShell і портал.Кін повторив повідомлення інших Microsoft execs був висловивши в TechEd на цьому тижні: Хмара можливості, з часом, буде  стати розширеним про те, що доступно локально. В даний час, відбувається зворотний процес, і Microsoft онлайн-сервіси пропонують підмножини функції, доступні в кожного продукту, еквіваленти програмне забезпечення.

Поняття, що хмара надасть додаткові можливості, ніж локальні є новою для мене. Цікаво, наскільки правдиве що буде в кінці кінців.  Вона відчуває себе контрінтуітівним мені.  Я категорично не отримати ідея, що багато компаній буде рухатися речі до хмари (або почати у хмарі) але я зазвичай думають, що вони роблять це, тому що в pro (простіше admin, SLA, д) значно переважують її мінуси (обмеження функціональності). 

У мене трохи важко вважати, що хмарні продукти перевищить на прем можливостей.  Мульти орендар важко і здається, що вона повинна змусити компроміси для того, щоб забезпечити хороший SLA та легкість користування...

Я буду ймовірно їдять мої слова з цього питання.  Пам'ятаю, я подумав, що ніхто, можливо, необхідно більше ніж 650 МБ даних і, отже,, CD ніколи не збирався бути поліпшені.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

SharePoint онлайн і InfoPath

Може бути, я останній чоловік реалі-, але SharePoint онлайн (я часто чую, як люди кажуть це прославлений WSS) підтримує форм InfoPath Forms Services.  Це дуже потужна річ, особливо враховуючи, що IP FS-це засіб, ЛИШАЙНИК підприємства і BPOS є щось подібне до $1,99 на місяць для 10,000 користувачі.  Може бути, це трохи більше, ніж.

Так, На сайті SharePoint не піддається легко визначенню.  Вона має цю функцію підприємства, але немає анонімного доступу (які навіть WSS підтримує).  Ви можете зробити деякі цікаві речі з пошуку (MOSS-ish, так як ви можете визначити рівень областей сайту), але якщо вам потрібен доступ до на SSP, Ви не можете зробити це.  You can play the “on the one hand and on the other” game all night long with this product 🙂

Microsoft має випустити нову версію СП онлайн у найближчі кілька місяців.  Цікаво, що дивні гібридних, це буде бути?

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin