博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SharePoint API测试系列——对Recorded Item做OM操作(委托的妙用)
阅读量:5957 次
发布时间:2019-06-19

本文共 4674 字,大约阅读时间需要 15 分钟。

转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/

对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(); };

这就是委托在测试中的妙用,极大的减少了重复代码量。

你可能感兴趣的文章
我的友情链接
查看>>
golang xml和json的解析与生成
查看>>
javascript 操作DOM元素样式
查看>>
Android 内存管理 &Memory Leak & OOM 分析
查看>>
【查找算法】基于存储的查找算法(哈希查找)
查看>>
JavaWeb网上图书商城完整项目--day02-10.提交注册表单功能之页面实现
查看>>
记录一下这次web实训的两个网站
查看>>
POJ-1830 开关问题 高斯消元
查看>>
做程序开发的你如果经常用Redis,这些问题肯定会遇到
查看>>
CAS-认证流程
查看>>
006android初级篇之jni数据类型映射
查看>>
Java 集合框架查阅技巧
查看>>
apache配置虚拟主机
查看>>
CollectionView水平和竖直瀑布流的实现
查看>>
前端知识复习一(css)
查看>>
spark集群启动步骤及web ui查看
查看>>
利用WCF改进文件流传输的三种方式
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
关于IT行业人员吃的都是青春饭?[透彻讲解]
查看>>
钱到用时方恨少(随记)
查看>>