Arxius de la categoria: SharePoint en línia

Pervers emocionant anunci

Fer anuncis no és realment la meva cosa, però aquesta vegada, Estic entusiasmat i realment realment justa llançada eslàlom gran poma del lloc del SharePoint. 

Jo treballo a eslàlom consulting i gestionar els Portals & Pràctica de col·laboració.  El lloc de gran poma és "el meu" lloc de la meva pràctica aquí a Nova York.  Sempre he volgut un d'aquests. Estic segur que molts SP pro ha desitjat per a alguna cosa semblant.  Quantes vegades hem mirat al lloc públic de la nostra pròpia empresa, o un dels clients i vist construir-lo fora i només sabent i desitjant que ells es basaria en SP?  Tots sabem que el SP és bastant bo en aquesta classe de cosa, però no és molt comú. 

Pou, els mons finalment alineats just per a mi-SP Online és realment barat, Vaig tenir l'equip adequat i temps suficient per fer-ho realitat.

Era un viatge sorprenent per arribar al llançar i i alguns dels que es comparteix allà dalt, en el lloc.

Llegir tot sobre ella aquí i si estàs interessat en els detalls darrere d'ell, Jo sóc més que feliç de parlar-ne.

Aquí està l'enllaç d'anunci oficial: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=82 #O365

</final>

Com a: Configurar la prova de unitat i prova de cobertura amb QUnit.js i Blanket.js per a una oficina 365 App de SharePoint

Introducció

Jo he estat explorant proves unitàries i cobertura de prova per JavaScript com treballo en un app nou SharePoint SharePoint en línia a l'oficina 365 Suite.  Els camins evident recerca em va portar a QUnit.js i just després que, per Blanket.js.

QUnit permetin establir proves d'unitat i agrupar-los en mòduls.  Un mòdul és només una manera simple d'organitzar proves relacionades. (No estic segur que estic utilitzant-lo segons el previst, però està treballant per a mi fins ara amb el petit conjunt de proves que fins ara han definit).

Blanket.js s'integra amb Qunit i em mostrarà les línies actuals de JavaScript que eren – i més importantment-no eren realment executada en el curs d'execució de les proves.  Això és "cobertura"-línies que executava són coberts per la prova, mentre que altres no són.

Entre establint bons casos de prova i veure cobertura, podem reduir el risc que el nostre codi ha amagat defectes.  Bons moments.

QUnit

Suposant que té el seu estudi Visual projecte va establir, Comenci descarregant el paquet JavaScript des http://qunitjs.com.  Afegir el JavaScript i CSS corresponent a la seva solució.  Mina els aspectes com això:

image

Figura 1

Com es pot veure, Estava utilitzant 1.13.0 en el moment que vaig escriure aquesta entrada de blog. No oblidi descarregar i afegir l'arxiu CSS.

Que fora de la manera, següent pas és crear algun tipus de prova arnès i els bits Qunit de referència.  Estic provant un munt de funcions en un arxiu d'escriptura anomenat "QuizUtil.js", així que he creat una pàgina HTML anomenat "QuizUtil_test.html" tal com es Mostra:

image Figura 2

Aquí és el codi:

<!DOCTYPE HTML>
<HTML xmlns= "http://www.w3.org/ 1999/xhtml">
<responsable>
    <títol>Prova QuizUtil amb Qunit</títol>
    <enllaç rel= "full d'estil" href="../CSS/QUnit-1.13.0.CSS" />
    <script tipus= text/javascript"" src="QuizUtil.js" dades-portada></script>
    <tipus d'escriptura ="text/javascript" src ="qunit-1.13.0.js"></script>
    <tipus d'escriptura ="text/javascript" src ="blanket.min.js"></script>

    <script>
        mòdul("getIDFromLookup");
        prova("QuizUtil getIDFromLookupField", funció () {
            var goodValue = "1;#Paul Galvin";

            igual(getIDFromLookupField(goodValue) + 1, 2), "ID de [" + goodValue + "] + 1 hauria de ser 2";
            igual(getIDFromLookupField(indefinit), indefinit, "Argument d'entrada indefinit nar resultat indefinit.");
            igual(getIDFromLookupField(""), indefinit, "Argument d'entrada buit hauria de retornar un valor indefinit.");
            igual(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;vn"), indefinit,"Sempre nar un convertible resultat un enter");
            igual(getIDFromLookupField("2;#una altra persona"), "2", «Comprovació [2;#una altra persona].");
            igual(getIDFromLookupField("9834524;#valor llarg"), "9834524", "Prova de gran valor.");
            notEqual(getIDFromLookupField("5;#ningú", 6), 6, "Provant un notEqual (5 no és igual a 6 d'aquesta Mostra: [5;#ningú]");

        });

        mòdul("htmlEscape");
        prova("QuizUtil htmlEscape()", funció () {
            igual(htmlEscape("<"), "&lt;", "Escapar a menys que l'operador ('<')");
            igual(htmlEscape("<classe div =  "someclass">Un text</Div>"), "&lt;classe div =&quot;someclass&quot;&gt;Un text&lt;/Div&gt;", "Cadena de prova més complex.");
        });

        mòdul("getDateAsCaml");
        prova("QuizUtil getDateAsCaml()", funció () {
            igual(getDateAsCaml(nou Data("12/31/2013")), "2013-12-31T:00:00:00", "Provant durament codificat data: [12/31/2013]");
            igual(getDateAsCaml(nou Data("01/05/2014")), "2014-01-05T:00:00:00", "Provant durament codificat data: [01/05/2014]");
            igual(getDateAsCaml(nou Data("01/31/2014")), "2014-01-31T:00:00:00", "Provant durament codificat data: [01/31/2014]");
            igual(getTodayAsCaml(), getDateAsCaml(nou Data()), "getTodayAsCaml() ha la igualtat getDateAsCaml(nova data())");
            igual(getDateAsCaml("valor tonteries"), indefinit, "Intenta aconseguir la cita d'un valor de tonteries.");
            igual(getDateAsCaml(indefinit), indefinit, «Tractar d'aconseguir la data de la [indefinit] data.");
        });

        mòdul("getParameterByName");
        prova("QuizUtil getParameterByName (de la cadena de consulta)", funció () {
            igual(getParameterByName(indefinit), indefinit, "Intenta aconseguir paràmetre indefinit nar indefinit.");
            igual(getParameterByName("no existeix"), indefinit, "Intenta aconseguir el valor del paràmetre quan sabem que el paràmetre no existeix.");

        });

        mòdul(Galetes"");
        prova("QuizUtil diverses funcions de galeta.", funció () {
            igual(setCookie(«prova", "1", -1), getCookieValue(«prova"), "Get una galeta I posar funcionarà.");
            igual(setCookie("anycookie", "1", -1), True, "Creació d'una cuina vàlid hauria de retornar 'veritable'.");
            igual(setCookie("nom de cookie boig !@#$%"%\^&*(()?/><.,", "1", -1), True, "Creació d'un nom de cookie mal hauria de retornar"fals".");
            igual(setCookie(indefinit, "1", -1), indefinit, "Passant indefinit com a nom de galeta.");
            igual(getCookieValue("no existeix"), "", "Galeta no existeixen proves.");
        });

    </script>
</responsable>
<cos>
    <Div ID= «qunit"></Div>
    <Div ID= "qunit-fixació"></Div>

</cos>
</HTML>

Hi ha diverses coses passant aquí:

  1. El meu codi de referència (QuizUtil.js)
  2. Referència Qunity.js
  3. Definició d'alguns mòduls (getIDFromLookup, Galetes, i altres)
  4. Posant una <Div> ID del qual és "qunit".

Llavors, Només aixecar aquesta pàgina i aconsegueix alguna cosa com això:

image

Figura 3

Si ens fixem a la part superior, té unes quantes opcions, dues de les quals són interessants:

  • Amaga passar proves: Força obvi.  Pot ajudar el seu ull només veure les àrees problemàtiques i no molt de desendreçar.
  • Mòdul: (desplegable): Això filtrarà les proves fins a només aquells grups de proves de que vol.

Pel que fa a les proves si mateixos-uns quants comentaris:

  • Cal dir que cal escriure el seu codi tal que això sigui provable en primer lloc.  Utilitzant l'eina pot ajudar a fer complir aquesta disciplina. Per exemple, Tenia una funció anomenada "getTodayAsCaml()”.  Això no és molt comprovables ja que pren cap argument d'entrada i per analitzar-lo per a la igualtat, hauríem d'actualitzar constantment el codi de prova per reflectir la data actual.  Jo ho traslladades afegint un paràmetre d'entrada de dades a continuació, passar la data actual quan vull cita avui en CAML format.
  • El marc Qunit documenta seves pròpies proves i sembla bastant robust.  Es poden fer coses simples com testatge d'igualtat i també té suport per a les trucades de estil ajax (tant "real" o burlat utilitzant el teu mocker favorit).
  • Travessant el procés també t'obliga a pensar a través de casos vora-què passa amb "indefinit" o nul és superat en una funció.  Es fa totalment simple provar aquests escenaris fora.  Coses bones.

Cobertura amb Blanket.js

Blanket.js complementa Qunit mitjançant el seguiment de les actuals línies de codi que executar durant el transcurs de l'execució de les proves.  Integra dret en Qunit així tot i que és un conjunt de seperate app, sona molt bé-realment sembla com si fos un app sense costura.

Això és blanket.js en acció:

image Figura 4

image

Figura 5

(Realment has de fer clic a la casella de selecció "Enable cobertura" a la part superior [veure figura 3] per permetre això.)

Les línies ressaltats en la figura 5 no han estat executades per qualsevol de les meves proves, Així que necessito per dissenyar una prova que els provoquen executar si vull cobertura completa.

Obtenir blanket.js treballant seguint aquests passos:

  1. Descarregar-lo des de http://blanketjs.org/.
  2. Afegir-lo al seu projecte
  3. Actualitzar la seva pàgina de prova arnès (QuizUtil_test.html en el meu cas) les següents:
    1. El codi de referència
    2. Decorar el seu <script> referència com aquest:
    <script tipus= text/javascript"" src="QuizUtil.js" dades-portada></script>

Blanket.js recull l'atribut "cobrir dades" i té la seva màgia.  Es pot enganxar-se Qunit, la interfície d'usuari per afegir l'opció "Habilita cobertura" d'actualitzacions i voila!

Resum (TL; DR.)

Ús Qunit per escriure el seu casos de prova.

  • Descarregar-lo
  • Afegir-lo al seu projecte
  • Escriure una pàgina de prova de Arnés
  • Crear les proves
    • Reestructurar alguns del vostre codi de ser comprovables
    • Ser creatiu!  Crec que de boig, escenaris impossibles i provar-los de totes maneres.

Ús blanket.js per garantir la cobertura

  • Assegureu-vos que Qunit està treballant
  • Descarregar blanket.js i afegir-lo al seu projecte
  • Afegir-lo a la seva pàgina de prova arnès:
    • Afegir una referència a blanket.js
    • Afegeix un atribut de "dades cobrir" pel seu <script> etiqueta
  • Executar les proves Qunit.

Mai va fer res d'això abans i tenia algunes coses rudimentària treballant en un grapat d'hores. 

Proves feliç!

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

BPO 2010 i "subconjunt”

Jo estava llegint un dels Aquests articles bla-com força genèrics sobre BPOS (L'exchange i SharePoint al núvol de Microsoft) i per sort a través de waded a l'extrem:

Pel que fa a altres els lliuraments de curt termini, Microsoft és commiting a proporcionar en BPOS v.Next natiu PowerShell scripts mitjançant una complexió d'endpoint de PowerShell en versió de PowerShell 2. L'autenticació es realitza a través d'identificadors en línia, amb una credencial sol ser capaç de ser utilitzat per tant PowerShell i el portal.Keane el missatge fet ressò altre Microsoft executius han estat expressant al TechEd aquesta setmana: Núvol capacitats, amb el temps, es  un subconjunt del que és local disponible convertit en. Actualment, el revers és cert, i serveis en línia de Microsoft oferir un subconjunt de les funcions disponibles en les equivalències de programari de cada producte.

La noció que el núvol proporcionarà més capacitat del local és nou per a mi. Em pregunto què tan cert que va ser al final.  Se sent contradictori per a mi.  Totalment d'aconseguir la idea que moltes empreses es mourà coses al núvol (o començar en el núvol) però normalment crec que fer-ho perquè el pro (Administració més fàcil, Es registren els, etc) molt superiors als contres (funcionalitat reduïda). 

Estic tenint una mica d'un temps difícil creure que núvol ofrenes superarà les capacitats sobre-prem.  Multi-llogater és difícil i sembla forçar acords per tal de proporcionar bona SLA i facilitat d'ús...

Vaig a probablement estar menjant les meves paraules sobre això.  Recordo pensant que ningú podria necessitar més de 650 MB de dades i per tant, el CD mai anava a ser millorat.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

SharePoint en línia i l'InfoPath

Pot ser l'última persona a adonar-se d'això, però el SharePoint en línia (que sovint sento a gent dir és un glorificat WSS) dóna suport a l'InfoPath Forms Services.  Que és una cosa molt poderós, sobretot tenint en compte que IP FS és una característica de l'empresa de molsa i BPO és una cosa així com $1.99/ mes per a 10,000 usuaris.  Potser és una mica més que.

Així, SharePoint Online desafia la definició fàcil.  Té aquesta característica d'empresa, però no hi ha accés anònim (que fins i tot WSS suports).  Vostè pot fer algunes coses interessants amb la recerca (MOSS-ish, ja podeu definir àmbits de nivell de lloc), però si necessiteu accedir a l'SSP, vostè no pot fer-ho.  Podeu jugar al joc "d'una banda i de l'altre" durant tota la nit amb aquest producte 🙂

Microsoft és degut d'alliberar una versió nova de SP Online en els propers mesos.  Em pregunto quin estrany híbrid que va ser?

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin