Категория Архиви: SharePoint онлайн

Нечестивите вълнуващо съобщение

Да уведомяват за това не е наистина ми нещо, но този път, Аз съм наистина и наистина развълнувана за току-що стартиралата слалом Big Apple SharePoint сайта. 

Работя в слалом консултиране и управление на портали & Практика на сътрудничество.  Big Apple Сайтът е "Моят" сайт за моята практика тук в Ню Йорк.  Аз бях дълго исках един от тези. Аз съм сигурен, че много SP про е искало за нещо подобно.  Колко пъти погледнах ние в нашата компания публичния сайт, или един от клиентите и ги разглежда изграждането му навън и просто знаят и които желаят, че ще го построят на SP?  Ние всички знаем, че SP е доста добър в този вид на нещо, но това не е много често. 

Ами, светове най-накрая подравнени само правото за мен-SP онлайн е наистина евтини, Имах правото екип и достатъчно време, за действително да го направиш.

Това е едно невероятно пътуване да стигнем до стартиране и и някои от това се споделя там на сайта.

Прочети всичко за него тук и ако сте заинтересовани в детайли зад него, Аз съм повече от щастлив да говоря за това.

Ето и официалното обявяване линк: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=82 #O365

</край>

Как да: Конфигуриране на единица тест и тест покритие с QUnit.js и Blanket.js за офис 365 SharePoint App

Интро

Аз съм бил проучване на единица тестване и тест покритие за 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</заглавие>
    <връзка отн= "стилове" HREF="../CSS/qunit-1.13.0.CSS" />
    <скрипт тип= текст/javascript"" SRC="QuizUtil.js" данни-корица></скрипт>
    <скрипт тип ="текст/javascript" SRC ="qunit-1.13.0.js"></скрипт>
    <скрипт тип ="текст/javascript" SRC ="blanket.min.js"></скрипт>

    <скрипт>
        модул("getIDFromLookup");
        тест("QuizUtil getIDFromLookupField", функция () {
            var goodValue = "1;#Пол Galvin";

            равни(getIDFromLookupField(goodValue) + 1, 2), "ИД на [" + goodValue + "] + 1 трябва да бъде 2";
            равни(getIDFromLookupField(неопределен), неопределен, "Undefined входен аргумент трябва да се върне недефиниран резултат.");
            равни(getIDFromLookupField(""), неопределен, "Празни входен аргумент трябва да връща стойности на недефиниран.");
            равни(getIDFromLookupField("gobbledigood3-thq;dkvn ада;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), неопределен,"Трябва да връща винаги резултат конвертируема до цяло число");
            равни(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 клас =&как много;SomeClass&как много;&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 различни бисквитка функции.", функция () {
            равни(setCookie("тест", "1", -1), getCookieValue("тест"), "Get бисквитка задам трябва да работи.");
            равни(setCookie("anycookie", "1", -1), вярно, "Определяне на валиден готвене трябва да се върне"истина".");
            равни(setCookie("луд Бисквитеното име !@#$%"%\^&*(()?/><.,", "1", -1), вярно, "Въвеждане на лош бисквитка име трябва да се върне"неистина".");
            равни(setCookie(неопределен, "1", -1), неопределен, "Минаваща неопределени като името на бисквитката.");
            равни(getCookieValue("не съществува"), "", "Бисквитката не съществува тест.");
        });

    </скрипт>
</главата>
<тяло>
    <DIV ИД= "qunit"></DIV>
    <DIV ИД= "qunit-приспособление"></DIV>

</тяло>
</HTML>

Има няколко неща, случва тук:

  1. Съотнасяне ми код (QuizUtil.js)
  2. Съотнасяне Qunity.js
  3. Определяне на някои модули (getIDFromLookup, Бисквитки, и други)
  4. Поставяне <DIV> чието име е "qunit".

След това, Аз просто дръпнете тази страница и да получите нещо подобно:

image

Фигура 3

Ако погледнете в началото, имате няколко опции, две от които са интересни:

  • Скрий преминали тестове: Доста очевидно.  Може да помогне на очите си просто вижте на проблемните области и не е много елементарно.
  • Модул: (падащо меню): Това ще филтрира тестовете до само тези групи тестове искате.

Що се отнася до тестовете се – няколко коментари:

  • Разбира се че трябва да напишете кода си, така че на първо място е проверимо.  С помощта на инструмента може да ви помогне да наложат тази дисциплина. Например, Имах функция, наречена "getTodayAsCaml()”.  Това не е много проверимо, тъй като тя отнема не входен аргумент и да го тестват за равенство, Ние ще трябва да обновяваме изпитване код, за да отрази текущата дата.  Аз го refactored чрез добавяне на параметър за въвеждане на данни след това преминаване на текущата дата, когато искате днешна дата в CAML формат.
  • Qunit рамка документи собствените си изследвания и изглежда доста здрав.  Тя може да направи прости неща като проверка за равенство и също така има поддръжка за Аякс стил повиквания ("истински" или подиграване използването любимите си mocker).
  • Преминава през процеса и ви принуждава да мисли чрез крайни случаи – какво се случва с "неопределен" или 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"" SRC="QuizUtil.js" данни-корица></скрипт>

Blanket.js взима атрибута "данни-корица" и прави своята магия.  Куките в Qunit, актуализира интерфейс, за да добавите опцията "Разреши покритие" и готово!

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

Използвайте Qunit, за да напишете вашия тест случаи.

  • Изтеглете го
  • Го добавите към вашия проект
  • Пишете тест впрегне страница
  • Създайте си тестове
    • Някои от вашите код да бъде проверими refactor
    • Бъдете креативни!  Мисля на луд, невъзможно сценарии и ги тест все пак.

Използвайте 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 предлагат подмножество на функции, налични в софтуера еквиваленти на всеки продукт.

Идеята, че облакът ще осигури повече възможности, отколкото на-предпоставка е ново за мен. Чудя се колко е вярно, ще бъде в края на краищата.  Той се чувства нелогично за мен.  Напълно съм се идеята, че много фирми ще се премести неща в облака (или започнете в облака) но обикновено мисля, че те го правят, защото на про (по-лесно администратор, SLAs, н) далеч надхвърлят cons (намалена функционалност). 

Аз съм като малко време, вярвайки, че облак предложения ще надхвърли на prem възможности.  Мулти-наемател е трудно и изглежда като той трябва да принуди компромиси да осигури добра SLA и лекота на употреба...

Вероятно ще се яде думите ми по този въпрос.  Аз си мислех, че никой не е нужна повече от 650 MB на данни и следователно, CD никога няма да бъде подобрено.

</край>

Абонирайте се за моя блог.

Следвайте ме на Twitter в http://www.twitter.com/pagalvin

SharePoint онлайн и InfoPath

Аз може да бъде последният човек, за да се реализира това, но SharePoint онлайн (което често чувам хора казват е прослави WSS) поддържа InfoPath Forms Services.  Това е доста мощен неща, особено като се има предвид, че IP FS е Мос предприятие функция и BPOS е нещо като $1.99/ месец за 10,000 потребители.  Може би това е малко повече от това.

Така, SharePoint Online противоречи лесно дефиниция.  Тя има функцията предприятие, но няма анонимен достъп (кои дори 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