SharePoint API测试系列——对Recorded Item做OM操作(委托的妙用)
2015-10-14 18:01
253 查看
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/
对Recorded Item动态调用OM Methods进行测试,界面如下:
输入Site的URL,File在SharePoint中的相对URL,并选择OM操作类型,点击Test进行测试。代码如下:
提取每个OM Methods单元测试中的公共部分写成DoOMTest(CallOMMethod cm)方法,对于每个测试中不同的部分通过调用一个委托方法(橙色字体)来代替。然后我们对委托方法的类型进行声明(委托方法需要传入一个SPFile类型的参数):
再根据每个测试中的不同部分内容对委托进行实例化:
这就是委托在测试中的妙用,极大的减少了重复代码量。
对Recorded Item动态调用OM Methods进行测试,界面如下:
输入Site的URL,File在SharePoint中的相对URL,并选择OM操作类型,点击Test进行测试。代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.SharePoint; namespace RecordsOMTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); OMMethods_comboBox.Items.Add("Rename"); OMMethods_comboBox.Items.Add("File item delete"); OMMethods_comboBox.Items.Add("File delete"); OMMethods_comboBox.Items.Add("File item recycle"); OMMethods_comboBox.Items.Add("File recycle"); OMMethods_comboBox.Items.Add("File undo check out"); OMMethods_comboBox.Items.Add("File check in"); OMMethods_comboBox.Items.Add("File check out"); } public delegate void CallOMMethod(SPFile file); private void test_button_Click(object sender, EventArgs e) { /* Block delete test. */ //Rename test. CallOMMethod Rename = file => { file.Item["Name"] = "kkk.txt"; file.Item.Update(); }; //Delete test 1. CallOMMethod delete1 = file => { file.Item.Delete(); }; //Delete test 2. CallOMMethod delete2 = file => { file.Delete(); }; //Delete test 3. CallOMMethod delete3 = file => { file.Item.Recycle(); }; //Delete test 4. CallOMMethod delete4 = file => { file.Recycle(); }; /* Block edit and delete test. */ //UndoCheckOut test. CallOMMethod UndoCKOut = file => { file.UndoCheckOut(); }; //CheckIn test. CallOMMethod CkIn = file => { file.CheckIn("Check in."); }; //CheckOut test. CallOMMethod CkOut = file => { file.CheckOut(); }; switch (OMMethods_comboBox.Text) { case "Rename": //Rename test. DoOMTest(Rename); break; case "File item delete": DoOMTest(delete1); break; case "File delete": DoOMTest(delete2); break; case "File item recycle": DoOMTest(delete3); break; case "File recycle": DoOMTest(delete4); break; case "File undo check out": DoOMTest(UndoCKOut); break; case "File check in": DoOMTest(CkIn); break; case "File check out": DoOMTest(CkOut); break; } } private void DoOMTest(CallOMMethod cm) { using (SPSite site = new SPSite(siteUrl_textBox.Text)) { SPWeb web = site.RootWeb; SPFile file = web.GetFile(filePath_textBox.Text); try { cm.Invoke(file); //Reach this step means test failed. result_richTextBox.Text = "Test failed.\r\n"; result_richTextBox.SelectionColor = Color.Red; } catch (Exception ex) { result_richTextBox.Text = "Test passed.\r\n"; result_richTextBox.Select(0, result_richTextBox.Text.Length); result_richTextBox.SelectionColor = Color.Green; result_richTextBox.Text += string.Concat(ex); } } } } }
提取每个OM Methods单元测试中的公共部分写成DoOMTest(CallOMMethod cm)方法,对于每个测试中不同的部分通过调用一个委托方法(橙色字体)来代替。然后我们对委托方法的类型进行声明(委托方法需要传入一个SPFile类型的参数):
public delegate void CallOMMethod(SPFile file);
再根据每个测试中的不同部分内容对委托进行实例化:
//Rename test. CallOMMethod Rename = file => { file.Item["Name"] = "kkk.txt"; file.Item.Update(); }; //Delete test 1. CallOMMethod delete1 = file => { file.Item.Delete(); }; //Delete test 2. CallOMMethod delete2 = file => { file.Delete(); }; //Delete test 3. CallOMMethod delete3 = file => { file.Item.Recycle(); }; //Delete test 4. CallOMMethod delete4 = file => { file.Recycle(); }; //UndoCheckOut test. CallOMMethod UndoCKOut = file => { file.UndoCheckOut(); }; //CheckIn test. CallOMMethod CkIn = file => { file.CheckIn("Check in."); }; //CheckOut test. CallOMMethod CkOut = file => { file.CheckOut(); };
这就是委托在测试中的妙用,极大的减少了重复代码量。
相关文章推荐
- iOS-Storyboad动态刷新
- 初探oVirt-小结后重做一遍ovirt环境
- ifconfig 命令用来查看和配置网络设备
- Android笔记:获取url或uri字符串中的参数值
- 第四例:Intent启动Activity的几种方式(一)
- NYOJ 数字分隔(二)
- IOS 开发学习(3): IOS UI架构设计
- 如何将计算机加入到域环境中
- 应对Memcached缓存失效,导致高并发查询DB的几种思路
- 配置Snappy压缩
- 如何对网页的加载进行性能优化
- javaEE7中websocket的一个小问题
- kvo深入浅出举例
- MacTex XeLaTex xdvipdfmx:fatal: pdf_ref_obj(): passed invalid object. 报错的解决方法
- JS-获取图片地址
- iOS-Storyboad动态刷新
- CentOS编译PHP5报错解决方法
- poj--3624--Charm Bracelet(动态规划 水题)
- 增强for循环
- android 巨大bug之 ViewPager 子页面中包含TextView singleLine在viewPager中有textview。 当textview的参数为singleLine和grav