对于集成测试,我使用EntityFrameworkCore SQLite内存数据库并根据 Microsoft 文档创建其架构,但是当我尝试播种数据时,会抛出表不存在的异常。
鼠标悬停文档DbContext.Database.EnsureCreated();:
确保上下文的数据库存在。如果存在,则不执行任何操作。如果它不存在,则创建数据库及其所有模式。如果数据库存在,则不会采取任何措施来确保它与此上下文的模型兼容。
我已经读到EntityFrameworkCore内存中的数据库只存在于打开的连接时才存在,所以我尝试显式创建一个var connection = new SqliteConnection("DataSource=:memory:");实例并将下面的代码包装在一个using(connection) {}块中并传递连接实例options.UseSqlite(connection);,但DbContext.Database.EnsureCreated();仍然没有创建任何数据库-对象
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<Startup>
{
protected override IWebHostBuilder CreateWebHostBuilder()
{
return WebHost.CreateDefaultBuilder()
.UseStartup<Startup>();
}
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
using (var connection = new SqliteConnection("DataSource=MySharedInMemoryDb;mode=memory;cache=shared"))
{
connection.Open();
builder.ConfigureServices(services =>
{
var serviceProvider = new ServiceCollection()
.AddEntityFrameworkSqlite()
.BuildServiceProvider();
services.AddDbContext<MyDbContext>(options =>
{
options.UseSqlite(connection);
options.UseInternalServiceProvider(serviceProvider);
});
var contextServiceProvider = services.BuildServiceProvider();
// we need a scope …Run Code Online (Sandbox Code Playgroud) c# sqlite integration-testing in-memory-database entity-framework-core-2.2
从我本地仓库的路径的cmd行,我执行了git svn clone命令但是使用了错误的URL.
然后我尝试git svn clone用正确的url 执行,但我不能,因为它告诉我"svn-remote.svn.url already set"
我该怎么svn-remote.svn.url办?
登录$ComputerName为本地管理员Windows Server 2008 R2 SP1
这个脚本:
$admin=[adsi]("WinNT://" + $ComputerName + "/administrator, user")
$admin.psbase.invoke("SetPassword", $Password)
$admin.psbase.CommitChanges()
Run Code Online (Sandbox Code Playgroud)
本地运行抛出异常: Exception calling "Invoke" with "2" argument(s):"The network path was not found"
我是node.js的新手,在大多数代码中,我看到我没有看到IoC/DI样式构造函数注入依赖项.
相反,通常node.js扩展名require()用于创建允许访问外部模块导出的本地变量.
但是在编写单元测试(隔离单层/函数)时,如何模拟通过使用require创建的变量访问的模块?
/helpers/dataHelper.js
var dataModel = require('../models/dataModel.js');
var getFormattedDataForRegion = function(region, callback) {
var data = {};
// validate region
// query dataModel
// async.map format data items
// callback(data);
}
/tests/dataHelperTests.js
describe('dataHelper', function(){
it('getFormattedDataForRegion returns expected response', function(done){
var expectedData = {};
// populate expectedData
// **** need some way to mock dataModel *****
dataHelper.getFormattedDataForRegion("west", function(data){
expect(data).to.eql(expectedData);
done();
});
});
Run Code Online (Sandbox Code Playgroud) 我有一系列颜色,我想按顺序排序.但是,我不想使用它们的"自然"排序对它们进行排序,而是将它们保持在这个顺序中:
var order = ['white', 'yellow', 'violet', 'blue', 'orange', 'red', 'maroon', 'brown', 'black'];
Run Code Online (Sandbox Code Playgroud)
因此,例如,对此数组进行排序
var items = ['blue', 'violet', 'white', 'black', 'orange'];
Run Code Online (Sandbox Code Playgroud)
应该回馈
['white', 'violet', 'blue', 'orange', 'black'];
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的:
var itemsInOrder = [];
for (var i=0; i<order.length; i++) {
if (items.indexOf(order[i]) > -1) {
itemsInOrder.push(order[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定它的扩展程度如何 - 如果order有100或1000个元素,但'项目'有10个?
什么是实现这一目标的良好,可扩展的方法?
在 Windows Server 2008 上运行的 ASP.NET C# 应用程序
我发现 Git .idx 和 .pack 文件对程序删除特别有抵抗力:
C:\github\my-org\my-repo\.git\objects\pack\pack-905fbcfd5f24c5711de900f3946b4137d26df6d5.idx
C:\github\my-org\my-repo\.git\objects\pack\pack-905fbcfd5f24c5711de900f3946b4137d26df6d5.pack
git clone 操作将文件创建为只读 - 但即使关闭该位,删除仍然有问题:
var path = @"C:\github\my-org\my-repo\.git\objects\pack\pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx";
File.SetAttributes(path , FileAttributes.Normal);
File.Delete(path);
Run Code Online (Sandbox Code Playgroud)
File.Delete(path) 代码抛出异常:
拒绝访问路径“pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx”。
由于路径不在我的站点目录中,我想知道 ASP.NET 站点 AppPool 工作进程标识是否需要明确分配权限以写入/删除其应用程序域之外的文件夹/文件?
请注意,在我的 Windows 7 本地工作站上,调用删除目录操作的 nUnit 测试运行绿色。在调试器中,我可以证明一旦从所有文件(如果存在)中删除只读属性,Directory.Delete(path,true) 操作就不会抛出。
IETF RFC 允许请求包含具有相同字段名称的多个标头,只要保留顺序并且值可以转换为具有逗号分隔值列表的单个标头
https://www.rfc-editor.org/rfc/rfc2616#section-4.2
当且仅当该
头字段的整个字段值被定义为逗号分隔列表[即#(values)]时,具有相同字段名称的多个消息头字段可以出现在消息中。 通过将每个后续字段值附加到第一个字段值(每个字段值之间用逗号分隔)
,必须可以将多个标头字段组合成一个
“字段名称:字段值”对,而不更改消息的语义。
因此,具有相同字段名称的头字段的接收顺序
对于组合字段值的解释很重要
,因此当转发消息时,代理不得更改这些字段值的顺序。
ASP.NET 如何处理具有相同字段名称的多个标头的存在?
HttpContext.Current.Request.Headers[]
Run Code Online (Sandbox Code Playgroud)
Headers[]是一个System.Collection.Specialized.NameValueCollection键值对的集合,其中值实际上可能是值的集合。
但尚不清楚如何从请求标头中解构多个值:集合是通过解析单个值的逗号分隔列表构造的吗?或者它是从具有相同字段名称的一个或多个标头的集合中解构的?
Visual Studio 2015
C#
NuGet Packages :
Google.Protobuf v3.0.0
Google.Protobuf.Tools v3.0.0
Run Code Online (Sandbox Code Playgroud)
消息类型 Quake
syntax = "proto3";
import "google/protobuf/timestamp.proto";
message Quake {
google.protobuf.Timestamp _timestamp = 1;
double magnitude = 2;
}
Run Code Online (Sandbox Code Playgroud)
timestamp.proto 包含在同一个文件夹中
protoc 3.0.2 命令行编译成功
但是VS右键单击proto文件并选择“运行自定义工具”失败,错误“自定义工具'ProtoBufTool'失败。”
从 Visual Studio 中生成 C# 类?
c# timestamp protocol-buffers protobuf-csharp-port protocol-buffers-3
protogen.exeproto2为类型的消息字段生成此模式long:
private long _Count = default(long);
[global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"Count", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
[global::System.ComponentModel.DefaultValue(default(long))]
public long Count
{
get { return _Count; }
set { _Count = value; }
}
Run Code Online (Sandbox Code Playgroud)
但由于proto2不包含日期时间类型(并且protobuf-net不支持proto3包含google.protobuf.Timestamp),因此不清楚如何DateTime在手动编码的 C# proto 对象中表示。
这可能是错误的:
private DateTime _When = DateTime.MinValue;
[global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"When", DataFormat = global::ProtoBuf.DataFormat.Default)]
[global::System.ComponentModel.DefaultValue(DateTime.MinValue)]
public DateTime When
{
get { return _When; }
set { _When = value; }
} …Run Code Online (Sandbox Code Playgroud) [launcher]: Cannot load browser "FireFox": it is not registered! Perhaps you are missing some plugin?
Run Code Online (Sandbox Code Playgroud)
我已遵循所有步骤(我所知道的):
npm install karma-firefox-launcher --save-dev
Run Code Online (Sandbox Code Playgroud)
karma.conf.js
plugins: [
require('karma-jasmine'),
require('karma-firefox-launcher'),
require('karma-ie-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
Run Code Online (Sandbox Code Playgroud)
\node_modules\karma-firefox-launcher\按预期存在
package.json
"devDependencies": {
"karma-firefox-launcher": "^1.1.0",
Run Code Online (Sandbox Code Playgroud)
注意:启动 IE 浏览器没有问题
这可能是一个误导性错误,而真正的问题是 Karma 找不到 Firefox.exe 吗?
c# ×4
git ×2
javascript ×2
timestamp ×2
angular ×1
asp.net ×1
collections ×1
datetime ×1
file ×1
firefox ×1
git-svn ×1
github ×1
header ×1
karma-runner ×1
mocha.js ×1
mocking ×1
node.js ×1
plugins ×1
powershell ×1
protobuf-net ×1
request ×1
sorting ×1
sqlite ×1
svn ×1
windows ×1