我最近一直致力于一个已经开始变得相当依赖的项目,并且一直在探索使用AutoMocking容器来清理我的测试并使它们不那么脆弱的想法.
我听说过反对TDD/BDD纯粹主义者使用它们的论点,说明如下:测试主题需要哪些依赖项并不是很明显,或者你可以添加你真正不需要的依赖项.对于使用它们来说,两者听起来都不是特别强烈的论据
从我的角度来看,引入一个将允许我根据需要重构,删除和引入符合业务需求的依赖项,而不必经常返回测试并引入新的模拟/存根以获得编译代码.
AutoMocking被认为是好/坏的做法吗?是否应该使用或不应该使用它?
什么是 Azure 和 .NET 服务?与 WCF 服务有任何关联吗?
我正在开发一个大量使用dynamic类型的代码库,并且越来越难以准确地找出正在创建和传递的内容。即使在调试和检查感兴趣的类型时,只要我检查动态视图,我就会收到“无法发现有关此对象的更多信息”消息,这没有帮助。有什么有用的技巧可以帮助我更多地了解隐藏在dynamic黑魔法背后的一些类型和属性吗?
居中对齐一些已增加的文本letter-spacing以使其实际上位于其容器的中心的最佳方法是什么?文本位于h5在父级中居中对齐的标签中div,但明显位于左侧,因为letter-spacing适用于每个字母的右侧。我可以手动添加一些左侧填充,但如果更改浏览器缩放级别,则不会保持一致对齐。
有没有办法使用 css 或 JavaScript 来计算每个字母之间的间距?有没有更好的方法在字母之间插入间距,使所有内容都居中对齐?
容器 div 的20px所有侧面都已经有填充,因此我确实需要添加0.75em左侧填充。以下是 和 容器标签的相关 css h5:
.container {
padding: 20px;
float: left;
}
.container h5 {
font-size: 33px;
letter-spacing: 1.5em;
text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
容器看起来像这样:

NSubstitute是否有相当于MOQ的VerifyAll电话?我想验证我希望在所有替代品中接收的所有调用实际上都被调用,理想情况是在单个TearDown方法中调用.我目前正在测试中单独验证每个接听的电话,这并不理想.对于初学者来说,如果没有单独明确验证,那么在替代品上设置但实际上没有被调用的任何调用都将通过网络传输.
我在NSubstitute中有一个失败的测试,因为传入替换调用的参数不匹配.以下是正在测试的相关代码:
// Arrange
PermissionsProviderSub = Substitute.For<IPermissionsProvider>();
MenuDataProviderSub = Substitute.For<IMenuDataProvider>();
PermissionsProviderSub.GetPermissions(UserId).Returns(ExpectedUserPermissions);
MenuDataProviderSub.GetMenuData(ExpectedUserPermissions.AuthorisedPageIds).Returns(Arg.Any<IList<BusinessFocusArea>>());
var sut = new MenuViewModelFactory(MenuDataProviderSub, PermissionsProviderSub);
// Act
var result = sut.Create();
// Assert
MenuDataProviderSub.Received().GetMenuData(ExpectedUserPermissions.AuthorisedPageIds);
Run Code Online (Sandbox Code Playgroud)
该ExpectedUserPermissions.AuthorisedPageIds属性中出现问题,如下所示:
public IEnumerable<string> AuthorisedPageIds
{
get
{
return ApplicationPagePermissions != null ?
ApplicationPagePermissions.Select(permissionSet => permissionSet.PageId) :
Enumerable.Empty<string>();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,有一个LINQ Select,它PageId从ApplicationPagePermissions集合中提取属性并将其作为一个返回IEnumerable<string>.因为该属性中的投影创建了一个新对象,所以替换不匹配,因为它将两个对象视为不同.
我可以在传入的参数上创建回调,GetMenuData以便我可以检查它的值吗?
关于NSubstitute回调的文档仅讨论检查调用的返回值,而不是传递给调用的参数.
我有一个内部调用另一个方法的方法。
这个方法只有一个签名,例如:
Koko(ComplexType isKoko)
Run Code Online (Sandbox Code Playgroud)
我想验证此方法是否在不检查参数实例的情况下执行并执行以下操作:
It check_description = () => mockKoko.Verify(x => x.Koko(anything), Times.Once());
Run Code Online (Sandbox Code Playgroud)
我搜索了论坛和谷歌,找不到答案。
我将不胜感激任何帮助。
我想使用uiautomatorandroid中的工具打开wifi作为测试用例的一部分.我尝试在uiautomator测试用例中使用以下代码:
WifiManager wi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wi.isWifiEnabled()){
wi.setWifiEnabled(false);
}else{
wi.setWifiEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
但它给出了这个错误:
Mainclass的"getSystemservice"方法未定义
如何使用 HTTP PUT 方法发送字节数组?AddFile类的方法RestRequest发送额外的标头。方法AddParameter采用一个Object类型。
我是怎么做的:
byte[] data;
using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, query);
data = ms.ToArray();
ms.Close();
}
var client = new RestClient(ServerPath);
var request = new RestRequest(RequestPath, Method.PUT);
request.AddFile("stream", x => new MemoryStream(data), string.Empty);
client.ExecuteAsync(request, responce => Debug.WriteLine(responce.Content));
Run Code Online (Sandbox Code Playgroud)
但在服务器端我看到额外的标题
-------------------------------28947758029299 内容配置:表单数据;名称=“流”;filename="" Content-Type: application/octet-stream [RAW DATA HERE] -------------------------------28947758029299 ——
额外的标题使查询不可读。我做错了什么?
我有一个高度的div,overflow-x: hidden所以我可以看到垂直滚动条.现在,当我用鼠标滚轮滚动整个页面时,如果我的光标位于该div的顶部,则它开始滚动div而不是页面.是否可以删除此特定div上的鼠标滚动?
c# ×4
mocking ×3
unit-testing ×3
css ×2
moq ×2
nsubstitute ×2
.net ×1
alignment ×1
android ×1
automocking ×1
azure ×1
callback ×1
debugging ×1
dynamic ×1
html ×1
javascript ×1
jquery ×1
restsharp ×1
tdd ×1
wcf ×1