转载请注明出自天外归云的博客园: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(, 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(); };

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

SharePoint API测试系列——对Recorded Item做OM操作(委托的妙用)的更多相关文章

  1. SharePoint API测试系列——Records.BypassLocks测试

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对于SharePoint中已经是Record的Item,我们想要修改他的属性,这在UI界面是无法完 ...

  2. SharePoint API测试系列——Manage SharePoint Site Policy & Expiration Email with CSOM API

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对CSOM(Not SSOM) Site Policy & Expiration Emai ...

  3. Aliexpress API 测试工具

    Aliexpress API 测试工具 上回简单说了 Aliexpress API 的认证流程, 这回在奉送一个小工具, API 测试工具. 点我下载 做这一行,和做程序员的生活完全不搭调, 格格不入 ...

  4. 初学者的API测试技巧

    API(应用程序编程接口)测试是一种直接在API级别执行验证的软件测试.它是集成测试的一部分,它确认API是否满足测试人员对功能.可靠性.性能和安全性的期望.与UI测试不同,API测试是在没有GUI层 ...

  5. 自动化测试系列(二)|API测试

    在上次的自动化测试系列(一)中为大家大体介绍了自动化测试的概念,本文主要针对API测试的概念及API测试在猪齿鱼Choerodon中的实践展开. API(应用程序编程接口)测试是一种软件测试,可以直接 ...

  6. ASP.NET Web API 2系列(三):查看WebAPI接口的详细说明及测试接口

    引言 前边两篇博客介绍了Web API的基本框架以及路由配置,这篇博客主要解决在前后端分离项目中,为前端人员提供详细接口说明的问题,主要是通过修改WebApi HelpPage相关代码和添加WebAp ...

  7. 《软件测试52讲》读书笔记 —— API测试怎么做

    前言 文章中还介绍了测试工具,比如cURL.postman,单API如何测试:但这些都是偏基础的东西,且网上教程各式各样,就不再赘述了:这里主要讲的就是关于复杂场景的API测试要如何应对 API测试的 ...

  8. 淘宝API开发系列---阿里.聚石塔.开放平台的使用

    好久没有继续跟进淘宝的API使用了,有很多做相关应用的同行都来咨询,很多都因为自己开发工作比较忙而没有来得及好的处理,前几天,有一个朋友叫帮忙指导如何使用淘宝API,由于原来有一些成熟的例子应用,因此 ...

  9. 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入

    使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...

随机推荐

  1. [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. poj: 1004

    简单题 #include <iostream> #include <stdio.h> #include <string.h> #include <stack& ...

  3. 每天一个java基础知识--static

    内存总体一共分为了 4个部分(stack segment.heap segment.code segment.data segment) 当我们在程序中,申明一个局部变量的时候,此变量就存放在了 st ...

  4. Power Gating的设计(概述)

    Leakage power随着CMOS电路工艺进程,功耗越来越大. Power Domain的开关一般通过硬件中的timer和系统层次的功耗管理软件来进行控制,需要在一下几方面做trade-off: ...

  5. zw版【转发·台湾nvp系列Delphi例程】HALCON ObjToInteger1-4

    zw版[转发·台湾nvp系列Delphi例程]HALCON ObjToInteger1 procedure TForm1.Button1Click(Sender: TObject);var img, ...

  6. Sinatra+SQLite3+DataMapper - 十分完整的tutorial - “Superdo”

    原文地址:https://ididitmyway.herokuapp.com/past/2010/3/30/superdo_a_sinatra_and_datamapper_to_do_list/ 这 ...

  7. Elasticsearch--配置文件

    config目录下有2个配置文件:es的配置文件:elasticsearch.yml日志配置文件:logging.yml,更多内容请参考:ELK教程 cluster.name: elasticsear ...

  8. 鸟哥的linux私房菜之档案与文件系统的压缩与打包

    00000001 节约空间 其实简单的说压缩就是把没有用到的0给去掉,解压的时候在加上 在linux中,压缩文件档案的扩展名大多是.tar,.tar.gz,tgz,gz,.Z,.bz2 compres ...

  9. javaWeb---Servlet

    1.整个Servlet页面跳转访问流程: 1.1:依据form表单的action的值找到web.xml中servlet-mapping的url的值找到对应的java类,在根据form中的method属 ...

  10. innodb的锁时间

    观察innodb的锁时间,需要关注: mysqladmin extended-status -r -i 1 -uroot | grep "Innodb_row_lock_time" ...