Tag: unit testing

没有数据库的unit testing:Linq to SQL

我有一个使用LINQ to SQL实现的存储库。 虽然我没有数据库,但我需要进行unit testing。 如何为FreezeAllAccountsForUser方法编写UT? 你能用手动模拟来展示一个例子吗? 注意:域对象中使用了inheritance映射 注意:unit testing将使用Visual Studio Team Test完成 来自@StuperUser的评论。 unit testing涉及将代码与其交互的其他对象完全隔离。 这意味着如果代码失败,您可以确定失败是与测试中的代码有关。 要做到这一点,你必须伪造这些对象。 码 public void FreezeAllAccountsForUser(int userId) { List bankAccountDTOList = new List(); IEnumerable accounts = AccountRepository.GetAllAccountsForUser(userId); foreach (DBML_Project.BankAccount acc in accounts) { string typeResult = Convert.ToString(acc.GetType()); string baseValue = Convert.ToString(typeof(DBML_Project.BankAccount)); if (String.Equals(typeResult, baseValue)) { throw new Exception(“Not correct […]

如何(我应该)模拟DocumentClb进行DocumentDbunit testing?

从新的CosmosDb模拟器我得到了一个存储库来执行基本的documentdb操作,这个存储库被注入到其他类。 我想对基本查询进行unit testing。 public class DocumentDBRepository where T : class { //Details ommited… public IQueryable GetQueryable() { return _client.CreateDocumentQuery( UriFactory.CreateDocumentCollectionUri(_databaseId, _collectionId), new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true }); } public async Task<IEnumerable> ExecuteQueryAsync(IQueryable query) { IDocumentQuery documentQuery = query.AsDocumentQuery(); List results = new List(); while (documentQuery.HasMoreResults) { results.AddRange(await documentQuery.ExecuteNextAsync()); } return results; […]

在Specflow中我可以运行一个测试作为另一个测试的一个步骤吗?

TL; DR; 如何创建一个将另一个测试调用为第一步的specflow测试? Given I already have one specflow test And I want to run another test that goes deeper than the first test Then I create a second test that runs the first test as its first step And I add additional steps to test the deeper functionality 对不起,那里有一点点幽默。 例如,我有一个测试,已经创建了一个销售: Given I want to […]

如何在selenium webdriver中等待元素加载?

我是selenium webdriver的新手,正在测试一个应用程序。 在我的应用程序中,我必须测试关于Facebook帐户的链接。 每当我点击链接时,弹出窗口都会显示在我必须输入凭据的位置。 我有时能够链接,有时测试失败。 我知道原因是因为加载弹出窗口需要时间并且执行下一个命令所以它无法找到该元素。 我使用过Thread.Sleep,但我想使用隐式等待或显式等待,这总是一个很好的做法,而不是Thread.Sleep。 如何使用隐式等待以及在哪里使用该命令? 请指教。 谢谢。 public void SocialFaceBook() { string currentWindow = driver.CurrentWindowHandle; PopupWindowFinder finder = new PopupWindowFinder(driver); string facebookWindow = finder.Click(driver.FindElement(By.XPath(“//div[@id=’panelFacebook’]/div[2]/div[3]/div[3]/a”))); // Switch To FaceBook Window driver.SwitchTo().Window(facebookWindow); System.Threading.Thread.Sleep(3000); // Link // Email Address IWebElement faceBookLinkEmail = driver.FindElement(By.Id(“email”)); faceBookLinkEmail.SendKeys(SocialFaceBookEmail); // Password IWebElement faceBookLinkPass = driver.FindElement(By.Id(“pass”)); faceBookLinkPass.SendKeys(SocialFaceBookPass); // Log In Button […]

寻找自定义SynchronizationContext的示例(unit testing需要)

我需要一个自定义的SynchronizationContext : 拥有一个运行“post”和“发送”代表的单个线程 是按发送顺序发送的 不需要其他方法 我需要这个,所以我可以单独测试一些线程代码,它们将在实际应用程序中与WinForm对话。 在我自己编写之前,我希望有人可以指出我的简单(和小)实现。

Moq.Mock – 如何设置一个表达式的方法

我正在模拟我的存储库接口,我不知道如何设置一个接受表达式并返回一个对象的方法? 我正在使用Moq和NUnit 接口: public interface IReadOnlyRepository : IDisposable { IQueryable All() where T : class; T Single(Expression<Func> expression) where T : class; } 使用IQueryable进行测试已经设置,但不知道如何设置T Single: private Moq.Mock _mockRepos; private AdminController _controller; [SetUp] public void SetUp() { var allPages = new List(); for (var i = 0; i < 10; i++) { allPages.Add(new Page { Id […]

如何在C#中unit testingTextrenderer.DrawText方法

public static void DrawText(IDeviceContext dc, string text, Font font, Point pt, Color foreColor, TextFormatFlags flags); 我有一个测试器应用程序,用于我的ExtendedComboBox。 以下代码中给出的所有String项都存在于我的测试器应用程序中的ComboBox项中。 如何对上面的方法进行unit testing,因为它返回void? 测试TextRenderer.Drawtext的另一种方法是什么? 是否有任何替代测试OnDrawItem方法来绘制ComboBox文本。 [TestMethod()] public void ExtendedComboBoxOnDrawPrefixTest() { ExtendedComboBox cboTest = new ExtendedComboBox (); // List of strings having special characters. string[] items = { “&One”, “T&wo”, “E!xclamation”, “Am@persat”, “H#ash”, “Dollar$Sign”, “Perc%ent”, “Ci^rcumflex”, “Ast*erisk”, “Hy-phen”, “Und_erscore”, “pl+us”, […]

如何对依赖于c#中的身份validation的MVC控制器操作进行unit testing?

我想(在c#中)编写MVC控制器操作的unit testing,该操作可能返回一个视图或另一个视图,具体取决于请求是否经过身份validation。 如何才能做到这一点?

如何将此EF Mock设置代码编写为可重用的Generic Boilerplate?

我正在使用moq,ef 6和xunit。 我发现自己一遍又一遍地编写这段代码,并且想到也许我可以把它变成一个通用的方法,但是遇到了一些麻烦。 public static void CreateSalesMock(List sales, Mock dbContextMock) { var data = sales.AsQueryable(); var mockSet = new Mock<DbSet>(); mockSet.As<IQueryable>() .Setup(x => x.Provider) .Returns(data.Provider); mockSet.As<IQueryable>() .Setup(x => x.Expression) .Returns(data.Expression); mockSet.As<IQueryable>() .Setup(x => x.ElementType) .Returns(data.ElementType); mockSet.As<IQueryable>() .Setup(x => x.GetEnumerator()) .Returns(data.GetEnumerator()); dbContextMock.Setup(x => x.Sales).Returns(mockSet.Object); } 现在我在我的数据库中有许多其他表,所以如果我可以编写一个方法来接收该数据的列表并进行设置,那么我可以通过它进行模拟查询会很棒。 public static void CreateMockSet(T dataList, TA model, Func lambda, Mock […]

AutoFixture无法创建CreateAnonymous MVC Controller

代码: IFixture fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.Customize(c => c.Without(x => x.ModelMetadata)); var target = fixture.CreateAnonymous(); 例外: System.Reflection.TargetInvocationException:System.Reflection.TargetInvocationException:调用目标已抛出exception。 —> System.NotImplementedException:未实现方法或操作。 MyController()有3个参数。 我已经尝试了答案中描述的修复,但它不起作用。