我正在努力让我的头脑进行单元测试.我一直在关注Nerd晚餐和专业asp.net MVC框架的例子,但是一旦我尝试自己很快就会卡住.作为测试,我尝试构建一个仅使用登录信息的验证类 - usename和password从存储库返回用户.我已经使用了这个例子,因为很容易想象一个人可能会执行哪些测试:Is_Password_Valid,Is_Username_Valid等.
我花了很长时间试图让我的头脑得到这个.任何人都可以举例说明他们如何将其作为单元测试吗?我想,一旦我破解了这个,我就会离开.
//Arrange
string email = "test@test.com";
string password = "test";
//Arrange
List<Customer> customer = new List<Customer>();
customer.Add(new Customer { CustomerId = 1, Email = email, Password = "best", FirstName = "test", LastName = "wods", Sex = true });
mockRepos = new Moq.Mock<ICustomerRepository>();
mockRepos.Setup(x => x.GetCustomerByPasswordUsername(email, password)).Returns(customer.First());
Authenticate auth = new Authenticate(mockRepos.Object);
//Act
var result = auth.Login(email, password);
//Assert
//this is where I start to become unstuck??????
Run Code Online (Sandbox Code Playgroud) 是否可以通过自定义运行永久更新构建参数的值?
例如,考虑一个配置为具有内部版本号格式的版本:%Major%.%Minor%.%Patch%.%build.counter%
Major,Minor和Patch,在构建配置中定义为具有特定值.为了举个例子,假设这给出了3.1.2.36的内部版本号.
可以通过单击运行旁边的"..."更改构建号,然后更改其中一个参数的值.从1-> 2更改Minor并从2-> 0更改将使下一个版本的编号为3.2.0.37.
我并不过分担心37没有被重置为0,但问题是被触发的下一个构建(不是自定义运行的结果)将具有内部编号3.1.2.38,这是一个较低的数字.是否有可能在运行自定义构建并更改新值保持的数字时?
我正在寻找一种没有TeamCity管理员权限的用户可以根据他们所做的更改来增加版本号的方法.
我们正在运行v8.1.2(build 29993).
如何从nuspec中提取版本号到TeamCity?
我们有一个带有相应nuspec节点的csproj文件:
1.3.2
在TeamCity中,我想构建这个项目,并创建一个版本为1.3.2.%build.counter%的NuGet包.例如,1.3.2.322.重要的是版本号来自源代码控制(NuSpec)中的文件,我不想将其复制为TeamCity中的变量.有没有办法从NuSpec文件中提取1.3.2并将其用作TeamCity变量?
我有一个 BitBucket 存储库,其中包含ui
名为api
.
我的 BitBucket 管道ng test
为 Angular 应用程序运行,但node_modules
文件夹没有被正确缓存。
这是我的 BitBucket 管道 yml 文件:
image: trion/ng-cli-karma
pipelines:
default:
- step:
caches:
- angular-node
script:
- cd ui
- npm install
- ng test --watch=false
definitions:
caches:
angular-node: /ui/node_modules
Run Code Online (Sandbox Code Playgroud)
当构建运行时,它显示:
Cache "angular-node": Downloading
Cache "angular-node": Extracting
Cache "angular-node": Extracted
Run Code Online (Sandbox Code Playgroud)
但是当它执行该npm install
步骤时,它说:
在 41.944 秒内添加了 1623 个包
我正在尝试加快构建速度,但我无法弄清楚为什么 npm 需要安装依赖项,假设它们已经包含在已恢复的缓存中。
如何在任意分辨率下找到屏幕中心?
我希望我的程序出现在屏幕中间-10(在y轴上)。
(我的程序没有达到最大大小)
我在 WinForm 中使用 C#。
我正在尝试设置一个 Azure 函数以在我的开发环境中本地运行。我希望连接到 MongoDb 数据库实例。
在我的local.settings.json
文件中,我添加了:
"ConnectionStrings": {
"DB_CONNECT_STRING": "mongodb://localhost:27017/MyDatabase"
}
Run Code Online (Sandbox Code Playgroud)
在我的功能中,我有:
module.exports = function (context, myTimer) {
console.log(process.env.DB_CONNECT_STRING);
context.done();
};
Run Code Online (Sandbox Code Playgroud)
process.env.DB_CONNECT_STRING
未定义。
我假设我需要为环境变量添加某种前缀,但我无法在任何地方找到它。如何指定连接字符串并在函数代码中引用它?
我对docker-compose有点陌生,所以甚至不确定我在寻找什么。
我创建了两个映像,并使用docker-compose在本地环境中运行它们,这两个服务通过HTTP请求进行通信(两者都在localhost上运行,一个在端口3000上运行,一个在8000端口上运行)
当我将这两个服务移至docker(两个分离的容器和图像)时,我似乎无法使它们进行通信。
这是我的docker-compose文件:
version: '3'
services:
service1:
image: services/services1
ports:
- 3000:3000
links:
- "service2"
depends_on:
- service2
service2:
image: services/service2
ports:
- 8000:8000
Run Code Online (Sandbox Code Playgroud)
当我直接向每个服务发出http请求时,我会收到很好的响应,但是当我向service1发出请求时,而在services1中,我有另一个对服务2的请求,我根本无法得到响应
Error: connect ECONNREFUSED 127.0.0.1:8000
Run Code Online (Sandbox Code Playgroud)
两种服务都在0.0.0.0上运行
我们在TeamCity中有一个构建配置,有3个构建步骤.有没有办法阻止步骤2运行个人构建,以便正常的VCS触发器执行步骤1,2和3 - 但只有1和3运行个人构建?
对于个人构建,有一个变量BUILD_IS_PERSONAL设置为true,但如果不是,则不定义:http: //confluence.jetbrains.com/display/TCD8/Predefined+Build+Parameters
当我在构建配置脚本中使用变量时,你是如何使用变量的,它要求我手动定义值?
我正在尝试以编程方式编译Silverlight项目.最初我只是包装了MsBuild.exe,但是有一个错误说:
C:\ Program Files(x86)\ MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.Common.targets(104,9):未安装Silverlight 4 SDK.
我正在使用SilverLight 5并安装了Silverlight 4和Silverlight 5的SDK.该解决方案在Visual Studio中编译良好.我按照这个问题的建议:
MSBuild命令行错误 - 未安装Silverlight 4 SDK
我从跑步开始:
C:\ WINDOWS\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe
至:
C:\ WINDOWS\Microsoft.NET \框架\ v4.0.30319\msbuild.exe
这解决了这个问题,但是由于需求的变化,我现在需要使用Microsoft.Build而不包装MsBuild exe.我有以下代码:
var globalProperty = new Dictionary<string, string> { { "Configuration", "Debug"}, { "Platform", "Any CPU" } };
var buildParameters = new BuildParameters(new ProjectCollection()) { Loggers = new List<ILogger> { this.logger } };
var buildRequest = new BuildRequestData(@"C:\example\solution.sln", globalProperty, "4.0", new[] {"Build" }, null);
BuildResult buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest);
Run Code Online (Sandbox Code Playgroud)
但是,我现在再次看到:
ValidateSilverlightFrameworkPaths:ERROR C:\ Program Files(x86)\ MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.Common.targets(104,9):未安装Silverlight …
我在 Perforce 中看到了我无法解释的行为。我选取了主干的一个分支,并定期提交更改,并偶尔从主干合并到我的分支,以确保重新集成时不会出现重大冲突。
这项工作完成后,我使用 Perforce 合并/集成选项将更改应用到主干。在发送这些更改进行代码审查后,我对主干进行了一些更改。此时,没有任何更改已提交到主干。
当我提交所有这些更改时,差异显示的文件完全符合我的预期。提交更改列表后,提交的更改与 diff 窗口中显示的更改不同。相反,自合并/集成以来我所做的更改并不存在。在服务器和主干上的本地副本之间进行比较,在代码审查后对相同文件进行了所有更改。因此,我必须进行第二次提交来修复损坏的构建。
我很困惑这是如何发生的,因为我认为 Perforce 只在客户端上保留每个文件的一个本地副本?
即使有一个标志显示文件已被篡改,它提交的文件在哪里?它确实在提交窗口中显示了主干路径,但我想它可能已经从分支获取了文件?
另一个问题是,在使用 Perforce 版本控制时,我应该如何最好地处理上述场景?
我有以下代码:
protected Dictionary<string, ObjectAttribute<T>> attributes;
Run Code Online (Sandbox Code Playgroud)
每次我向目录添加一个新项时都应该传递一个泛型类型,但我不想使用object/dynamic,因为它可能会导致一些转换问题.那么,有可能这样吗?
T没有在类构造函数中或其他任何地方定义,因为每次添加项目时我都需要它.
c# ×3
teamcity ×3
teamcity-8.0 ×2
.net-4.0 ×1
azure ×1
bitbucket ×1
dictionary ×1
docker ×1
generics ×1
merge ×1
moq ×1
msbuild ×1
node.js ×1
nuget ×1
perforce ×1
silverlight ×1
unit-testing ×1
winforms ×1