小编Dar*_*ryn的帖子

使用Moq模拟类时,如何使用CallBase来获取特定方法?

我非常感谢Moq的Loose模拟行为,在没有设定期望时返回默认值.这很方便,可以节省代码,也可以作为一种安全措施:在单元测试期间不会无意中调用依赖关系(只要它们是虚拟的).

但是,当被测方法恰好是虚拟时,我对如何保持这些好处感到困惑.
在这种情况下,我确实想要为这一个方法调用真正的代码,同时仍然对该类的其余部分进行松散的模拟.

我在搜索中找到的就是我可以设置mock.CallBase = true以确保调用该方法.但是,这会影响整个班级.我不想那样做,因为它让我陷入了隐藏调用依赖关系的类中所有其他属性和方法的两难境地:如果CallBase是真的那么我必须要么

  1. 为隐藏依赖项的所有属性和方法设置存根 - 即使我的测试认为它不需要关心这些依赖项,或者
  2. 希望我不要忘记设置任何存根(并且以后没有新的依赖项添加到代码中) - 风险单元测试达到真正的依赖关系.

我想我想要的是:
mock.Setup(m => m.VirtualMethod()).CallBase();
所以当我打电话时mock.Object.VirtualMethod(),Moq会调用真正的实现......

问:有了Moq,有什么方法可以测试一个虚方法,当我嘲笑这个类只存在几个依赖项时?即不使用CallBase = true并且必须存根所有依赖项?


用于说明的示例代码
(使用MSTest,InternalsVisibleTo DynamicProxyGenAssembly2)

在以下示例中,TestNonVirtualMethod传递但是TestVirtualMethod失败 - 返回null.

public class Foo
{
    public string NonVirtualMethod() { return GetDependencyA(); }
    public virtual string VirtualMethod() { return GetDependencyA();}

    internal virtual string GetDependencyA() { return "! Hit REAL Dependency A !"; }
    // [... Possibly many other dependencies ...]
    internal virtual …
Run Code Online (Sandbox Code Playgroud)

unit-testing moq

37
推荐指数
2
解决办法
2万
查看次数

如何设计一个特定的angular-ui-bootstrap工具提示以使其更宽?

在我的AngualrJS应用程序中,我们使用angular-ui-bootstrap工具提示.

我有一个需要容纳长文本的工具提示.SO问题的答案在Bootstrap工具提示显示长文本向我展示了如何使工具提示更广泛......

...但是,如果我不想让所有工具提示更宽,只是一个特定的工具提示怎么办?

(注意:AngularJS 1.2.24,jQuery可用......但我宁愿能够将样式应用于单个工具提示而不是更复杂)

css angular-ui-bootstrap

12
推荐指数
2
解决办法
9166
查看次数

Google Play 管理中心 - 内部测试链接无效

我有一个应用程序发布到 Google Play 控制台进行内部测试,即我只希望此应用程序可供某些用户使用。以下是该应用程序的当前摘要;

在此处输入图片说明

请注意,这是我“尝试”查看是否有任何区别的第二个版本;我首先上传了 .AAB 文件,然后在最新版本中上传了 .APK 文件。

在此处输入图片说明

以下是我发送给测试人员的链接;

在此处输入图片说明

问题是,当测试人员点击链接时,他们会选择加入“程序”并可以选择在 google play 上下载它。当他们点击该链接时,它要么是无限加载,要么是一条消息说the requested URL was not found on this server.

  • 请注意,此应用程序尚未作为实时版本发布到 Play 商店。
  • 这是该应用程序首次上传到内部测试。
  • 该应用程序已于上周五(11 月 6 日)首次发布用于内部测试,现在是 11 月 9 日。

在仪表板上,有如下所示的公告,但我在任何地方都看不到应用程序的“状态”,即说它正在审查等。

在此处输入图片说明

来自谷歌的回复;

我了解您对应用程序待处理问题有一些担忧。请注意,您在 Play 管理中心提交新应用或更新现有应用后,可能需要一些时间来处理您的应用以在 Google Play 上发布。任何时候在审核尚未完成的情况下对应用进行更改都意味着审核期重新开始。此外,任何提交都无法检索或取消。因此,我们建议您调整计划以考虑到这一点并避免重新提交。

对于某些开发者帐户,我们会花更多时间彻底审核您的应用,以帮助更好地保护用户。在特殊情况下,这可能导致审核时间长达 7 天或更长时间。您始终可以在发布概览页面上查看当前状态。审核完成后,您将在“审核中的更改”部分下看到“审核中没有任何更改”。此外,我们还要提醒您,如果您开启了托管发布模式,您的更新将不会在您点击“查看并发布”后发布。

android google-play google-play-services

12
推荐指数
1
解决办法
5017
查看次数

如何在不破坏自动化测试的情况下为我的TabControl定义ControlTemplate?

摘要

在我的WPF应用程序中,我需要一个带左侧按钮的TabControl,所以我用我想要的布局定义了一个ControlTemplate,它运行正常.

但是,我的测试人员的自动测试工具无法看到选项卡的任何内容,包括当前选定的选项卡.

问题:如何通过自动化测试工具保持我的TabControl可测试,同时仍然定义ControlTemplate?


细节

我正在使用WPF 3.5开发WPF应用程序
我的测试人员正在使用一个名为QTP的自动测试工具
他说他可以使用UISpy.exe测试任何你能看到的内容

  • 当我使用没有应用模板的直接TabControl时,UISpy可以看到当前所选选项卡的内容.
  • 但是,当我使用ContentTemplate更改布局(下面显示的代码)时,UISpy仍然可以看到选项卡标题...但它无法看到内容.

示例WPF应用程序(Xaml):

<Window x:Class="TabControlTest.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Tab Control Test"
        Height="300"
        Width="300">
    <Window.Resources>
        <ControlTemplate x:Key="ButtonsOnLeftTabLayout"
                         TargetType="{x:Type TabControl}">
            <DockPanel>
                <StackPanel DockPanel.Dock="Left"
                            IsItemsHost="True" />
                <ContentPresenter Content="{TemplateBinding SelectedContent}" />
            </DockPanel>
        </ControlTemplate>
    </Window.Resources>
    <TabControl Template="{StaticResource ButtonsOnLeftTabLayout}">
        <TabItem Header="Tab 1">
            <StackPanel>
                <Button HorizontalAlignment="Center">Button 1</Button>
            </StackPanel>
        </TabItem>
        <TabItem Header="Tab 2">
            <StackPanel>
                <Button HorizontalAlignment="Center">Button 2</Button>
            </StackPanel>
        </TabItem>
    </TabControl>
</Window>
Run Code Online (Sandbox Code Playgroud)

到目前为止我的搜索结果:

  • 关于必须使用自定义AutomationPeer编写自定义TabControl的一堆内容(例如MSFT对论坛问题UI自动化的回答:访问ControlTemplate中的控件,博客发布自定义控件和UI自动化).但是我的每一个本能都说这是疯狂的矫枉过正,"必须有一种更简单的方法!"
  • 关于为ContentPresenter提供名称,x:名称或AutomationProperties.AutomationId的一些建议 - 没有任何效果

(搜索之后我终于找到了答案,但它花了比我想象的更长的时间,而且AutomationPeer的早期发现确实是错误的,所以我把它写成一个SO问题并自我回答,以防它在将来帮助其他人)

wpf automated-tests qtp ui-automation

7
推荐指数
1
解决办法
2281
查看次数

如何制作有效的内联XML模式?

我需要编写一个嵌入式XML模式,即该模式是在与数据相同的XML中定义的。

我试图了解如何正确执行此操作,但到目前为止,我还没有获得通过验证的简单示例。这是我尝试用作带有内联架构的简单示例XML的内容:(
注意:XML结构(例如,根/项目)已经大肆使用,因此我被约束为无法在数据元素上使用名称空间)

<?xml version="1.0"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="#mySchema">
  <xs:schema id="mySchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="root">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="item" type="xs:string"
                      maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
   </xs:element>
 </xs:schema>
 <item>String 1</item>
 <item>String 2</item>
 <item>String 3</item>
</root>
Run Code Online (Sandbox Code Playgroud)

但是,当我通过w3.org XML Schema Validator运行该XML时,该XML验证失败,并显示以下错误消息,它不希望将其<xs:schema>视为子元素!

每个cvc-complex-type.1.2.4无效: 元素{ http://www.w3.org/2001/XMLSchema }:此处不允许元素{None}:root中的模式(1),期望[{None}:项目,$]:

问:能否给我展示一个简单的XML文档的示例,该示例具有通过验证的内联模式定义?

xml xsd xml-validation

6
推荐指数
1
解决办法
7329
查看次数

使用 Stylesheet.create 反应原生元素

我正在尝试将react-native-elements 与我的React-Native 应用程序一起使用。

\n

我有一个包含主题详细信息的中央 js 文件,这些文件是使用 ThemeProvider 注入的,如此处所述 - https://react-native-elements.github.io/react-native-elements/docs/customization.html

\n

但是,当我尝试在组件的 stylesheet.create 方法中使用传递的主题时,出现错误。我究竟做错了什么?-

\n
import React from \'react\';\nimport {View, StyleSheet} from \'react-native\';\nimport {Text, withTheme} from \'react-native-elements\';\n\nconst Header = props => {\n  const {theme} = props;\n\n  return (\n    <View style={styles.container}>\n      <Text>Home</Text>\n    </View>\n  );\n};\nconst styles = StyleSheet.create({\n  container: {\n    width: \'100%\',\n    backgroundColor: theme.container.backgroundColor,//**** Getting error here stating that theme is not defined\n    shadowRadius: 1.5,\n    elevation: 2,\n    shadowColor: \'rgb(0,0,0)\',\n    shadowOpacity: 0.4,\n    shadowOffset: {width: 0, height: 2.5},\n  },\n});\n\nexport default withTheme(Header);\n
Run Code Online (Sandbox Code Playgroud)\n

如果我可以提供更多详细信息,请告诉我。 …

react-native react-native-elements

6
推荐指数
2
解决办法
5680
查看次数

我怎样才能限制角度$ q承诺并发?

我该怎么做$q.all但限制同时执行多少个promises?

我的问题就像我如何限制Q promise并发?

我希望一次产生的过程不超过5个

对于另一个问题,接受的答案是为了与Q一起工作而承诺的图书馆.但我特别感兴趣的是Angular的解决方案,而不是.$qQ

背景:问题正在解决:
我有两个步骤下载的文件:a)获取URL b)下载文件.
浏览器限制了可以同时检索多少文件,因此当直接使用promises时$q.all会触发所有下载,只有
N会立即发生,例如Chrome中的6,而其余​​文件会延迟.(请参阅浏览器中的Max并行http连接?)
问题是URL已过期,因此当浏览器执行第 N + 1 文件下载时,URL不再有效.
所以我想做的事情throttled.all(6, promises)而不是$q.all(promise)

concurrency promise angularjs angular-promise

5
推荐指数
1
解决办法
1382
查看次数

Visual Studio 2008浮动窗口是屏幕外的

我在Visual Studio 2008中的浮动窗口块(输出,错误列表,查找结果等)已经消失 - 我假设在屏幕外.

我无法找到选项的键盘快捷键(相当于实际窗口的Alt-Space的浮动窗口).怎样才能让我的浮动窗户回来?

visual-studio-2008 visual-studio

3
推荐指数
1
解决办法
963
查看次数

无法运行Xilium.CefGlue基于Visual Studio 2012构建

"大家好,我Xilium.CefGlue在Visual Studio上下载并构建了源代码(xilium-xilium.cefglue-b22787699e57),我还下载cef_binary_3.1453.1236_windows_xilium并复制libcef.dll到了Xilium Winforms演示版,因为应用程序需要它才能运行但是当我运行它时,我得到以下内容错误:

An attempt was made to load a program with an incorrect format. 
Exception from HRESULT: 0x8007000B
Run Code Online (Sandbox Code Playgroud)

我的目标是x86,我可以得到一些帮助吗?谢谢

winforms visual-studio-2012 chromium-embedded

3
推荐指数
1
解决办法
2926
查看次数

为什么Xilium.CefGlue WPF示例加载页面的速度很慢?

Xilium.CefGlue提供了一些示例项目呈现出铬嵌入式框架容器内的网页.

示例WPF应用程序CefGlue.Samples.WpfOsr 非常缓慢地加载页面.您可以在调试窗口中看到它在读取页面资源(html,css,javscript)方面进展非常缓慢 - 比在浏览器中加载同一页面慢一个数量级(即我的页面包含大约10秒) jquery&angularjs).

另一方面,示例Windows窗体应用程序CefGlue.Client没有显示同样的问题.

为什么WPF样本如此缓慢,并且WPF一般使用CEF,特别是Xilium的CefGlue.WPF,还是可以修复的问题?

wpf chromium-embedded

2
推荐指数
1
解决办法
3845
查看次数