{"version":"1.0","provider_name":"Simple Talk","provider_url":"https:\/\/www.red-gate.com\/simple-talk","author_name":"Phil Factor","author_url":"https:\/\/www.red-gate.com\/simple-talk\/author\/phil-factor\/","title":"Developing a SQL Server Function in a Test-Harness.","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"PTL0z1ip4M\"><a href=\"https:\/\/www.red-gate.com\/simple-talk\/blogs\/5438\/\">Developing a SQL Server Function in a Test-Harness.<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/www.red-gate.com\/simple-talk\/blogs\/5438\/embed\/#?secret=PTL0z1ip4M\" width=\"600\" height=\"338\" title=\"&#8220;Developing a SQL Server Function in a Test-Harness.&#8221; &#8212; Simple Talk\" data-secret=\"PTL0z1ip4M\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script type=\"text\/javascript\">\n\/* <![CDATA[ *\/\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/www.red-gate.com\/simple-talk\/wp-includes\/js\/wp-embed.min.js\n\/* ]]> *\/\n<\/script>\n","description":"Many times, it is a lot quicker to take some pain up-front and make a proper development\/test harness for a routine (function or procedure) rather than think 'I'm feeling lucky today!'. Then, you keep code and harness together from then on. Every time you run the build script, it runs the test harness too. The advantage is that, if the test harness persists, then it is much less likely that someone, probably 'you-in-the-future' unintentionally breaks the code.","thumbnail_url":"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2024\/07\/simple-talk-dark-background.jpg","thumbnail_width":1500,"thumbnail_height":1000}